Database 2 - SQL Injection

sojukang·2022년 7월 24일
0
post-custom-banner

SQL Injection

그게 뭐야?

  • 해킹의 목적으로 유저의 입력 값에 기대하지 않는 sql 쿼리문을 동작시키도록 주입하는 공격

공격 방법

인증 우회

  • 입력값과 동시에 다른 쿼리문을 입력하여 조작하는 방법
  • '1' = '1' 등 true인 조건을 삽입하고 다음에 원하는 쿼리를 삽입하는 등의 방법이 있다.

데이터 노출

  • 시스템에서 발생하는 SQL 관련 에러를 유발하여 데이터 베이스 구조를 유추하여 해킹에 활용한다.

방어 방법

인풋값 검증

  • SQL에서 문법으로 기능할 수 있는 문장 부호(", ', ; 등)이 포함된 인풋 값을 검증한다.

SQL 관련 에러 감추기

  • Presentation 계층에서 접근할 때 발생하는 예외에 데이터 베이스 관련 정보를 노출하지 않게 한다.
  • Global Exception Handling 용도의 500 Internal Error 등이 있다.

PreparedStatement 사용하기

  • PreparedStatement를 사용하면 (', ", \)등의 SQL 관련 문법으로 기능할 수 있는 문자들에 Escape sequence를 추가로 붙여 문법요소로 기능하지 않게 한다.

참고

gyoogle.dev
wikipedic.org
Real MySQL

profile
기계공학과 개발어린이
post-custom-banner

0개의 댓글