언어/Java

[Java] xss 방지 로직 짜기

antoroong 2025. 2. 16. 00:36

struts2 구조

프로젝트 이름 : N

IDE : 이클립스

DB : mysql

SQL : ibatis

OS : centos 7

server : tomcat 6

jdk : 1.6

프레임워크 : 전자정부프레임워크 3.8

 

 

목적

input창에는 대부분 DB로 명령어를 전송할 수 있다

그래서 insert update select delete가 진행이되기도하고

웹취약점에서 많이 걸리는 부분이기도하다

SQL injection 공격을 당할수 있으므로

값을 보낼때, 위험할 수 있는 코드들은 치환하도록 하자

 

 

 

public static String SqlInjectionAndXssFilter(String things) {  //받은 값(치환할 값)
String sValid = things;
        System.out.println("소희야 첫  things:"+things);
        if (sValid == null || "".equals(sValid)) {
            return sValid;
        }

        sValid = sValid.replaceAll("[oO][rR]|[aA][nN][dD]|[;]|[:]|[-][-]", "");
        sValid = sValid.toLowerCase().replaceAll("&", "#amp;");
        sValid = sValid.toLowerCase().replaceAll("#amp;", "&");
        sValid = sValid.replaceAll("&", "&");
        sValid = sValid.replaceAll("#", "#"); 
        sValid = sValid.replaceAll("<", "&#lt;");
        sValid = sValid.replaceAll(">", "&#gt;");
        sValid = sValid.replaceAll("\"", "&quot;");
        sValid = sValid.replaceAll("\'", "&#039;");
        sValid = sValid.replaceAll("·", "&middot;");
        sValid = sValid.replaceAll("'", "");
        sValid = sValid.replaceAll("//", "");
        sValid = sValid.replaceAll("\n", "<br/>");
        sValid = sValid.toLowerCase().replaceAll("sysobjects", "");
        sValid = sValid.toLowerCase().replaceAll("syscolumns", "");
        sValid = sValid.toLowerCase().replaceAll("execute", "");
        sValid = sValid.toLowerCase().replaceAll("xp_", "");
        sValid = sValid.toLowerCase().replaceAll("exec", "");
        sValid = sValid.toLowerCase().replaceAll("union", "");
        sValid = sValid.toLowerCase().replaceAll("drop", "");
        sValid = sValid.toLowerCase().replaceAll("delete", "");
        sValid = sValid.toLowerCase().replaceAll("<script", "");
        sValid = sValid.toLowerCase().replaceAll("alter", "");
        sValid = sValid.toLowerCase().replaceAll("update", "");
        sValid = sValid.toLowerCase().replaceAll("insert", "");
        sValid = sValid.toLowerCase().replaceAll("script", "");
        sValid = sValid.toLowerCase().replaceAll("object", "");
        sValid = sValid.toLowerCase().replaceAll("applet", "");
        sValid = sValid.toLowerCase().replaceAll("embed", "");
        sValid = sValid.toLowerCase().replaceAll("form", "");
        sValid = sValid.toLowerCase().replaceAll("iframe", "");
        sValid = sValid.toLowerCase().replaceAll("layer", "");
        sValid = sValid.toLowerCase().replaceAll("onload", "");
        sValid = sValid.toLowerCase().replaceAll("onclick", "");
        sValid = sValid.toLowerCase().replaceAll("vbscript", "");
        
        System.out.println("소희야 결과 sValid:"+sValid);
        
        //이것도 유용함 22.04.15
//        String sValid_new = StringEscapeUtils.escapeHtml4(sValid);
//        System.out.println("소희야 sValid_new:"+sValid_new);
        return sValid;
    }