본문 바로가기

Security/Hacking & Security

[보안 해킹] 홈페이지 개발 보안 방안 - SQL 인젝션

[보안 해킹] 홈페이지 개발 보안 방안 - 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


문의 사항 남기기