SQL 인젝션

ddalkigum·2022년 7월 7일
1

TIL

목록 보기
48/50
post-thumbnail

SQL Inject공격이란?
어떻게 막아햐 하나?

SQL Inject

일단 의미 그대로 해석해본다면 SQL문을 주입해서 공격하는 방식으로 DB에 직접적으로 타격을 주는 공격이다

많은 예시들을 살펴봤고 보통 로그인하는 방식을 예로 들고 있다

예시들이 궁금하다면
너무 설명을 잘해주셔서, 이미 잘나와있는 내용에 대해서는 또 적을 필요가 있을까싶다

https://velog.io/@yanghl98/Database-SQL-Injection

방어?

  1. 입력값 검증
  2. DB의 escape함수
  3. prepared statement를 사용하자

이 3가지의 방법이 있다, 따지고 보면 3가지는 아니고
입력값 검증과 2번, 3번중에 하나 선택해서 사용하자 이다

내가 느낀점은 이 공격이 가능한 공격인가? 라는 생각이었고

내가 SQL문을 사용하는 경우는

  • 통계를 낼때
  • Join, SubQuery 날릴 때
  • 원하는 수치를 찾을 때

보통 위 3가지 케이스를 제외하고는 지금까지는 ORM을 주로 사용했기 때문에
이 공격이 가능한 공격인가? 생각했던 것 같다

TypeORM을 사용하면서 나도 모르게 prepared statement를 사용했고,
입력값 검증은 Joi 라이브러리를 이용하여 방어하고 있던 것이다

분명한건 무조건 알고는 있어야 한다는 것이다
왜? 알아야 뭐가 잘못됬는지 아니까

profile
딸기검 -본캐🐒 , 김준형 - 현실 본캐 🐒

0개의 댓글