스패로우 같은 취약점 점검 툴을 점검 결과로
제가 있는 사이트에 기존 sql mapper 파일에서 500개 정도되는 Mybatis Sql Injection 취약점이 나왔습니다.
원인은 ${} 사용 때문입니다.
${}를 전부 #{}로 바꿔줬습니다.
SELECT '${BIND1}' FROM TEST
WHERE ${BIND2} BETWEEN '${BIND3}' AND '${BIND4}'
저같은 경우는 notepad++ 로 수정했습니다.
이클립스나 STS도 당연히 정규식을 지원합니다.
\$\{[^{}]*\}
일반적으로 ${} 안쓰는 것이 좋습니다.
성능면에서도 #{} 가 더 좋습니다. DB에 Library Cache를 찾아서 실행하기 때문입니다.
SELECT #{BIND1}
FROM DUAL
실제 DB질의는 "SELECT ? FROM DUAL" 로 나가고
파라미터로 #{BIND1} 값이 나갑니다.
'개발 > 오라클 SQL' 카테고리의 다른 글
문자열 다루기 핵심 TRANSLATE (1) | 2022.11.25 |
---|---|
IN, NOT IN, EXISTS, NOT EXISTS (0) | 2022.11.10 |
마이바티스 null 체크 (0) | 2022.09.28 |
바인드 변수 두 개를 받아 그 사이 달력 찍기 (0) | 2022.06.02 |
달력 만드는 과정 (0) | 2022.06.02 |