-
[CS study] 2022.05.22CS 2022. 5. 22. 18:56
SQL injection (SQL 주입)

예시 - 클라이언트의 입력값을 조작하여 서버의 데이터베이스를 공격하는 공격 방식
- 공격의 쉬운 난이도에 비해 파괴력이 어마어마하다
공격 방법
- 인증 우회
- 로그인을 할 때 아이디와 비밀번호를 input창에 입력하게 된다.
- 공격을 할 때는 input창에 비밀번호를 입력함과 동시에 다른 쿼리문을 함께 입력하는 것
- 보안이 완벽하지 않으면 아이디, 비밀번호가 일치하며 True가 되고 뒤에 작성한 쿼리 문도 동작을 해 DB에 영향을 줄 수 있다
- 데이터 노출
- 시스템에서 발생하는 에러를 이용해 공격하는 방법
- 에러는 개발자가 버그를 수정하는 부분에서 도움을 받을 수 있는 존재이다.
- 해커들은 이를 역이용해 악의적인 구문을 삽입해서 에러를 유발
- GET방식으로 동작하는 URL 쿼리 스트링을 추가하여 에러를 발생시킨 후 이를 통해 DB구조를 유추해냄
방어 방법
- input값을 받을 때 특수문자 여부를 검사하기
- SQL 서버 오류가 발생할 시 해당하는 에러 메시지를 감춘다.
- preparestatement 사용하기
- preparestatement: 직역하면 준비된 서술로 SQL 쿼리를 사전에 컴파일 한 뒤 변수만 따로 집어넣어 실행하는 것
'CS' 카테고리의 다른 글
[CS study] 2022.06.01 (0) 2022.06.01 [CS study] 2022.05.30 (0) 2022.05.31 [CS study] 2022.05.11 (0) 2022.05.12 [CS study] 2022.05.10 (0) 2022.05.10 [CS study] 2022.04.22 (2) 2022.04.23