본문 바로가기
보안/개발보안

SQL 삽입

by ^..^v 2019. 10. 1.
728x90
반응형

외부 입력값에 쿼리 조작 문자열 포함 여부를 확인하지 않고 쿼리문(SQL) 생성 및 실행에 사용하는 경우 발생

→ 쿼리문의 구조와 의미가 변형되어서 실행

⇒ 권한 밖의 데이터에 접근이 가능

⇒ DBMS 서버의 제어권 탈취

⇒ 쿼리 실행 결과를 우회한 처리

 

[대응방안]

  • 정적쿼리를 사용(실행) = PreparedStatement 객체를 사용 = 구조화된 쿼리 실행 = 파라미터화된 쿼리 실행
  • 동적쿼리를 사용해야 하는 경우, 입력값 검증 후 사용 = 쿼리 조작 문자열 포함 여부를 확인 후 사용
  • 애플리케이션에서 사용하는 DB 사용자의 권한을 최소로 부여 → Stored Procedure를 이용한 SQLi 공격 또는 Union-Based SQLi 공격을 완화
  • 오류 메시지에 시스템 정보가 노출되지 않도록 통제 → Error-Based SQLi 공격을 완화
  • ORM 프레임워크를 사용하는 경우, 외부 입력값을 쿼리맵에 바인딩할 때 # 기호를 이용  

 

 

728x90
반응형

'보안 > 개발보안' 카테고리의 다른 글

운영체제 명령어 삽입  (0) 2019.10.01
크로스사이트 스크립트  (0) 2019.10.01
경로조작 및 자원삽입  (0) 2019.10.01
Command Injection 방어 코드  (0) 2014.11.18
UNION based SQL Injection 실습  (0) 2014.11.18

댓글