본문 바로가기

해킹-보안

XSS 화이트리스트 소스코드

반응형


클라이언트 단에 자바스크립트 필터링 로직이 구현될 경우 우회 가능성이 존재하므로
아래 코드를 참고하여 서버단에 XSS 화이트리스트 필터링을 구현할 것을 권고한다.

 // filter
 str= str.replaceAll("&","&")
         .replaceAll("#","#")
         .replaceAll(";","&#59;")
         .replaceAll("\\\\","\")
         .replaceAll("<","&lt;")
         .replaceAll(">","&gt;")
         .replaceAll("\\(","&#40;")
         .replaceAll("\\)","&#41;")
         .replaceAll("'","&#39;")
         .replaceAll("\"","&quot;")
         .replaceAll("[$]","&#36;")
         .replaceAll("[*]","&#42;")
         .replaceAll("[+]","&#43;")
         .replaceAll("[|]","&#124;")
         .replaceAll("\\.","&#46;")
         .replaceAll("\\?","&#63;")
         .replaceAll("\\[","&#91;")
         .replaceAll("\\]","&#93;")
         .replaceAll("\\^","&#94;")
         .replaceAll("\\{","&#123;")
         .replaceAll("\\}","&#125;")
         .replaceAll("!","&#33;")
         .replaceAll("%","&#37;")
         .replaceAll(",","&#44;")
         .replaceAll("-","&#45;")
         .replaceAll("/","&#47;")
         .replaceAll(":","&#58;")
         .replaceAll("=","&#61;")
         .replaceAll("@","&#64;")
         .replaceAll("_","&#95;")
         .replaceAll("`","&#96;")
         .replaceAll("~","&#126;");
          
 // allow tag
 str = str.replaceAll("&lt;p&gt;","<p>")
          .replaceAll("&lt;br&gt;","<br>")
          .replaceAll("&lt;h5&gt;","<h5>");











반응형