보안/개발보안
SQL 삽입
^..^v
2019. 10. 1. 21:03
728x90
반응형
외부 입력값에 쿼리 조작 문자열 포함 여부를 확인하지 않고 쿼리문(SQL) 생성 및 실행에 사용하는 경우 발생
→ 쿼리문의 구조와 의미가 변형되어서 실행
⇒ 권한 밖의 데이터에 접근이 가능
⇒ DBMS 서버의 제어권 탈취
⇒ 쿼리 실행 결과를 우회한 처리
[대응방안]
- 정적쿼리를 사용(실행) = PreparedStatement 객체를 사용 = 구조화된 쿼리 실행 = 파라미터화된 쿼리 실행
- 동적쿼리를 사용해야 하는 경우, 입력값 검증 후 사용 = 쿼리 조작 문자열 포함 여부를 확인 후 사용
- 애플리케이션에서 사용하는 DB 사용자의 권한을 최소로 부여 → Stored Procedure를 이용한 SQLi 공격 또는 Union-Based SQLi 공격을 완화
- 오류 메시지에 시스템 정보가 노출되지 않도록 통제 → Error-Based SQLi 공격을 완화
- ORM 프레임워크를 사용하는 경우, 외부 입력값을 쿼리맵에 바인딩할 때 # 기호를 이용
728x90
반응형