데이터와 MyBatis — 실습
#{} = 안전한 PreparedStatement (값을 따옴표로 감쌈). ${} = 위험한 문자열 치환 (그대로 끼워넣음).
<!-- 위험한 코드 (Demo 용) -->
<select id="login" resultType="com.smhrd.domain.Member">
SELECT * FROM mymember
WHERE id = '${id}' AND pwd = '${pwd}'
</select>
-- 공격 입력:
id = "admin' OR '1'='1"
→ 완성된 SQL:
SELECT * FROM mymember WHERE id='admin' OR '1'='1' AND pwd='...'
→ 누구나 admin 으로 로그인 가능!
<!-- 안전한 코드 -->
<select id="login" resultType="com.smhrd.domain.Member">
SELECT * FROM mymember
WHERE id = #{id} AND pwd = #{pwd}
</select>
Run on Server 또는 javac+java 로 실행하고 결과를 확인합니다.