SQL Injection은 웹 사이트의 보안상 허점을 이용해, sql쿼리 문을 이용해서 디비의 정보를 가져오는 해킹기법입니다.
대부분의 클라이언트가 입력한 데이터를 필터링 하지 못할 경우 발생합니다.
인젝션의 대표적인 공격 방법은 다음과 같습니다.
* 논리적 에러를 이용한 SQL 인젝션
- select * from member where name='abcde' password='12345'
--> select * form client where name='abcde' and password='1342'
or '1' = '1'
앞 값과 뒤 값중 하나라도 참이면 참이 되므로 이 구문은 로그인에 성공하게 됩니다.
이를 예방하기 위한 방법들은 다음과 같습니다.
1. 입력값 검증
입력값을 검사하여 SQLI를 예방하는 방법으로, SQLI에 쓰이는 특수문자나 SQL명령어가 있는지 검사해야합니다.
2. PreparedStatement사용
Prepared Statement란, 미리 쿼리에 대한 컴파일을 수행하고 입력값을 나중에 넣는 방식입니다.
따라서 정상적이지 않은 입력값이 들어와도 SQLI를 막을 수 있게 됩니다.
728x90
반응형
'Database' 카테고리의 다른 글
[mybatis] <include refid=""> (0) | 2022.02.17 |
---|---|
DB / 데이터베이스 - 인덱스 (0) | 2021.09.26 |
오라클 함수 select문 실행 순서 (0) | 2021.03.08 |
오라클 함수 (0) | 2021.03.05 |
오라클 연산자 우선순위 (0) | 2021.03.04 |