반응형

SQL Injection 2

Blind SQL Injection란?

SQL Injection 공격의 유형 중에 Blind Injection이라는 것이 있습니다. SQL Injection은 흔하게 들어봤는데, Blind SQL Injection은 얼마 전 GS 인증을 진행하며 처음 알게 되었습니다. Blind SQL Injection은 무엇일까요? Blind SQL Injection이란? Blind SQL(Structured Query Language) 주입은 데이터베이스에 참 또는 거짓 질문을 하고 애플리케이션 응답에 따라 답을 결정하는 SQL 주입 공격 유형입니다. 이 공격은 웹 애플리케이션이 일반 오류 메시지를 표시하도록 구성되었지만 SQL 주입에 취약한 코드를 완화하지 않은 경우에 자주 사용됩니다. 공격자가 SQL 인젝션을 악용할 때 때때로 웹 애플리케이션은 SQL..

spring boot에서 mybatis ${} 사용시 sql injection 방어하기

mybatiss를 사용할 경우 ${param}, #{param}과 같이 # 또는 $으로 parameter를 받을 수 있는데, 보통 아래와 같이 #을 사용해서 받는 것을 권장합니다. 그 이유는, #{}이 SQL Injection 공격에 안전하기 때문인데요 SELECT * FROM TB_USER WHERE USER_ID = #{userId} #이 SQL Injection에 안전한 이유는, #이 내부적으로 PreparedStatement를 사용하기 때문입니다. PreparedStatement는 값을 binding 하는 시점에 전달된 값에 대한 특수 문자, 쿼리 등을 필터링하여 SQL Injection을 막습니다. 하지만 ${}를 부득이하게 사용해야 할 경우가 있습니다. 제가 다니는 회사를 예로 들면, 고객사가..

웹 개발 2020.11.21
728x90
반응형
loading