본문 바로가기

Server Oriented/Java & JSP

JSP 프로그램 처리시 보안성 제고


사용자가 입력하는 부분에 대한 보안처리에는 아래와 같은 사항들이 존재.
 
1. 자동 시스템으로 입력이 되지 않도록 한다.
    서버 단에서 처리하는 로직에서 이전 페이지가 어디인가 하는 것은 중요한 화두.
    a.jsp 에서 사용자가 입력을 하면 b.jsp 가 서버 상의 File 처리나 DB 처리를 하는 경우,
    b.jsp 는 a.jsp 에서 호출한 것인지를 체크해야 한다.
    b.jsp 가 직접 호출되는 경우 더이상의 프로세스가 진행되면 안 된다.
 
2. 사용자가 입력하는 정보에 대한 Validation Check 는 자바스크립트에 의존하지 않는다.
    a.jsp 에서 사용자가 입력하는 정보를 체크하는 것은 좋은데 이는 가이드 용도 또는 편이성 제공 측면에서 처리하고,
    b.jsp 에서 사용자가 입력한 정보가 정상적인지를 최종적으로 체크해야 한다.
 
3. 사용자가 입력한 정보를 DB 에 넣을 때는 Statement 를 사용하지 않고..
    반드시, PreparedStatement 나 CallableStatement 를 사용한다.
    a.jsp 사용자 입력란에 SQLInjection 을 위한 코드가 묻어올 수 있기 때문이다.
 
4. 사용자가 입력하는 정보에서 자바스크립트가 묻어오지 않도록 한다.
    사용자가 입력한 정보를 조회하는 화면에서 사용자가 입력한 자바스크립트가 실행되지 않도록 한다.
    입력은 1번이고 조회는 여러번이기 쉽기 때문에..
    입력시에 체크하는 것이 시스템에 무리를 주지 않고, 사용자 입장에서도 느리지 않은 환경이 제공된다.
 
5. 사용자가 입력하는 첨부파일의 확장자를 체크하고 서버에서 실행되지 않도록 한다.
    이를테면, .jsp 나 .html(PHP 서버인 경우 특히), .js, .cer 등의 파일이 첨부되지 않도록 한다.
    주기적으로 서버에서 사용자가 입력하는 디렉토리에 상기 파일들이 존재하는지 점검한다.