[보안 해킹] 홈페이지 개발 보안 방안 - SQL 인젝션
■ 취약점 설명
- 공격자가 입력 폼 및 URL 입력란에 SQL 문을 삽입하여 DB로부터 정보를 열람하거나 조작할 수 있는 보안 취약점
■ 보안대책
⑴ Prepared Statement 객체 등을 이용하여 DB에 컴파일된 쿼리문(상수)을 전달하는 방법 사용
⑵ Parameterized Statement를 사용하는 경우, 외부 입력데이터에 대하여 특수문자 및 쿼리 예약어 필터링
⑶ Struts, Spring 등과 같은 프레임워크를 사용하는 경우 외부 입력 값 검증 모듈 사용
■ 코드예제
- 다음은 안전하지 않은 코드의 예를 나타낸 것으로, 외부로부터 tableName 과 name 의 값을 받아서 SQL 쿼리를 생성하고 있으며, name의 값으로 name' OR 'a'=a를 입력하면 조작된 쿼리문 전달이 가능한 형태의 코딩
- 다음은 안전하지 않은 코드를 안전하게 코친 예를 나타낸 것으로, 외부로부터 인자를 받는 preparedStatement 객체를 상수 스트링으로 생성하고, 인자 부분을 setXXX Method로 설정하여, 외부의 입력이 쿼리문의 구조를 바꾸는 것을 방지하는 코딩
※ 문의 사항은 메일 : jyuhm@sntkor.com 이나 070-8611-4853
'Security > Hacking & Security' 카테고리의 다른 글
[보안 해킹] 홈페이지 개발 보안 방안 - XQuery 인젝션 (0) | 2016.10.20 |
---|---|
[보안 해킹] 홈페이지 개발 보안 방안 - 운영체제 명령 실행 (0) | 2016.10.19 |
[보안 해킹] 홈페이지 보안 취약점 - 에러처리 취약점 (0) | 2016.10.18 |
[보안 해킹] 홈페이지 보안 취약점 - 권한 인증 취약점(쿠키 변조) (0) | 2016.10.18 |
[보안 해킹] 홈페이지 보안 취약점 - 권한 인증 취약점(세션 탈취) (0) | 2016.10.18 |