[학습] sql injection
- 국비지원 (스파르타)
- 2025. 3. 28. 22:47
반응형
반응형
외부에서 SQL문법을 넣어 공격하는 기법으로
개발자가 예상치 못한 결과를 야기시킬 수 있다.
예를들어, 로그인을 시도해야 하는경우 id에 admin을 입력하고 password는 모르는 상황에서
로그인이 되게 하려면 --를 붙이면 Sql공격이 가능해진다.
보통 SQL문을 작성할때 select * from table where user_id = 'admin'인데 여기다가
--은 SQL에서 주석을 뜻하기 때문에 뒤 문장들은 모두 주석처리가 되어진다.
그렇게 되면 아이디만 입력해도 로그인이 가능해진다.
여기에는 -- 말고도 'or 1=1' 이런 쿼리를 넣거나 다양한 방법으로 공격이 가능하다.
그렇다면 이것을 막는 방법은 무엇이 있을까?
1. SQL에 해당하는 모든 특수 문자를 막는 방법
2.preparestatement로 전달 인자값을 ?로 받는 방법
3. orm을 활용하는 방법
등 여러가지가 있다고 한다.
2번째 방법 같은 경우 SQL injection이 발생하는 원인은 쿼리를 ?가 아니라 +로 쿼리를 받게 되어진다.
+로 받게 되면 SQL문을 그대로 사용이 되지만 ?로 사용하게 되면 자동적으로 특수문자를 ecape해서 보호 할 수 있다고 한다.
반응형
'국비지원 (스파르타)' 카테고리의 다른 글
[학습] 데드락이란 무엇일까? (0) | 2025.04.02 |
---|---|
[학습] 클린코드 (0) | 2025.03.31 |
[학습] 도커- Dockerfile, docker-compose.yml (0) | 2025.03.27 |
[학습] 도커를 학습해보자!! (3) | 2025.03.26 |
[면접 준비] JVM이란? (1) | 2025.03.26 |