개발이야기/Java

[Java] XSS (크로스 사이트 스크립팅), SQL Injection 필터링 하기

후린개발자 2023. 8. 8.
반응형

아래 소스 코드는 사용자가 입력한 값으로부터 발생할 수 있는 XSS 및 SQL Injection으로부터 보호하기 위한 메서드입니다. replaceXssAnsSqlInjection 메서드는 입력된 문자열에서 특정 문자나 패턴을 검색하고 대체하여 취약점을 예방합니다. 아래와 같이 문자열 대체만으로는 보안 취약점을 완벽히 해결 못하니, 보다 체계적인 방어 전략을 적용하셔야 합니다.

 

public class TT {
    /**
     * XSS 및 Sql Injection Replace
     * @param str
     * @return
    */
    public static String replaceXssAnsSqlInjection(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","");
        value = value.replaceAll("/((\\%3D)|(=))[^\\n]*((\\%27)|(\')|(\\-\\-)|(\\%3B)|(;))/i","");
        value = value.replaceAll("/((\\%27)|(\'))union/ix","");
        value = value.replaceAll("/\\w*((\\%27)|(\\'))((\\%6F)|o|(\\%4F))((\\%72)|r|(\\%52))/ix","");       
        value = value.replaceAll("insert|update|delete|having|drop|(\'|%27).(and|or).(\'|%27)|(\'|%27).%7C{0,2}|%7C{2}","");
        value = value.replaceAll("/((\\%3C)|<)((\\%69)|i|(\\%49))((\\%6D)|m|(\\%4D))((\\%67)|g|(\\%47))[^\n]+((\\%3E)|>)/I","");
    
        return value;
    }
    public static void main(String[] args) throws Exception { 
        String userInput = "<script>alert('Hello, XSS!');</script>";
        String securedInput = replaceXssAnsSqlInjection(userInput);
     
        System.out.println("Original User Input: " + userInput);
        System.out.println("Secured Input: " + securedInput);
    }
}

 

 

소스 코드 실행 결과

 

반응형

댓글

💲 추천 글