본문 바로가기

Web

XSS (Cross Site Script) 공격 방어

반응형

 

 

웹 페이지를 만들 때 주의해야 할 점은 보안이다. 
보안 취약한 사이트의 경우 공격을 받게 되는데 공격들 중 하나가 바로 XSS 이다.

이 공격은 서버로 보내는 입력값에 자바스크립트를 보내서
악의적인 스크립트를 실행시켜서 사용자의 정보를 빼내는 것이다.
정보는 사용자 개인적은 정보나, 쿠키 같은 것들이 해당된다.

게시글을 등록할 때 스크립트문을 넣어서 등록한 후, 게시글을 조회해서 정보를 뺏어오거나
이메일이나 메세지를 상대방에게 보내는 입력값에 스크립트문을 넣어서 정보를 뺏어오거나 하는 것이 해당된다.

자신의 사이트가 XSS 를 방어하고 있는지 확인하는 방법은 간단하다.
임의의 입력창에 <script> alert("check!"); </script> 라고 입력하고
저장한 후 상세화면으로 들어갔을때 해당 코드가 실행되는지 확인하면 간단하다.

데이터를 저장할 때 처리를 해주면 된다.

 

// 입력값의 타입이 String이라고 가정했을 때
private String cleanXSS(String value) {
    value = value.replaceAll("<", "& lt;").replaceAll(">", "& gt;");
    value = value.replaceAll("\\(", "& #40;").replaceAll("\\)", "& #41;");
    value = value.replaceAll("'", "& #39;");
    value = value.replaceAll("eval\\((.*)\\)", "");
    value = value.replaceAll("[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']", "\"\"");
    value = value.replaceAll("script", "");
    return value;
}

 

공격이 될만한 스크립트문을 다 처리한 후 데이처를 저장하는 것이다.

 

 

반응형