티스토리 뷰
https://velog.io/@yanghl98/Database-SQL-Injection
이 페이지를 참고했습니다.
[Database] SQL Injection - 개념, 공격 방법, 방어 방법
응용 프로그램 보안 상의 허점을 의도적으로 이용해, 악의적인 SQL문을 실행되게 함으로써 데이터베이스를 비정상적으로 조작하는 공격 기법웹 애플리케이션이 백엔드에서 구동 중인 데이터베
velog.io
SQL Injection
프로그램의 보안상의 허점을 이용하여, 악의적으로 sql문을 실행하게하여 데이터베이스르 비정상적으로 공격하는 기법
=> 공격에 성공하게 되면 내부의 데이터를 획득할 수 있어서 보안상으로 조심해야한다.
SQL Injection 공격방법
1. 로그인 Form 대상으로 공격
로그인을 할때, input창에 의도적으로 쿼리문을 입력한다.
//정상적인 경우
//로그인 쿼리
select * from user where id = 'test' and password ='0000';
//비정상적인 경우
//의도적인 공격
select * from user where id = 'test' and password ='0000';
delete * user form id ='1';
의도적으로 input 공간에 직접 쿼리를 작성하여서 개발자가 원하지 않는 행동이 실행될 수 있다.
2. 검색 input 태그에 공격
//정상적인 경우
select * from user where name ='test';
//비정상적인 경우
select * from user where name ='test' or '1'=1;
or true를 만들면서, 비정상적인 행동을 초래할 수 있다.
3. url 쿼리 스트링 추가
악의적으로 url에 피라미터를 추가하여서 데이터베이스 구조를 유추할 수 있는 방법이다.
SQL Injection 방어방법
1. 입력 값 검증
앞에서 form 문에 의도적으로 sql문을 작성할 수 있다했다
그러면 이 form 문에 작성되는 입력 값에 대한 검증을 하면 된다.
2. 에러가 발생한 경우에, 그 후 대처법 구현
데이터 베이스 에러가 발생했을 경우 따로 처리를 해주지 않으면 에러가 발생한 곳과 등등 노출이 된다.
이 노출을 막기 위해서 , 사용자에게 보여줄 수 있는 에러페이지를 따로 만드는게 좋다.
3. Prepared Statment 구문을 사용
준비된 sql문을 사용하게 된다면, input에 들어가는 값은 단순히 문자열로 취급되기 때문에
sql injection은 발생하지 않는다.
- Total
- Today
- Yesterday
- 유스케이스
- eclipse
- set
- sourcetree
- 깃
- JPA
- 코딩
- 레이아웃
- Spring
- 기초100제
- 객체지향모델링
- 자바
- 모델링
- 파이썬기초
- java
- 스프링
- 코드업
- 파이썬
- 이클립스
- 객체지향
- 안드로이드
- laravel
- 백엔드
- UML
- sql
- 코드업기초
- 자바기초
- 다이어그램
- 개인프로젝트
- web
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |