반응형
아래 소스 코드는 사용자가 입력한 값으로부터 발생할 수 있는 XSS 및 SQL Injection으로부터 보호하기 위한 메서드입니다. replaceXssAnsSqlInjection 메서드는 입력된 문자열에서 특정 문자나 패턴을 검색하고 대체하여 취약점을 예방합니다. 아래와 같이 문자열 대체만으로는 보안 취약점을 완벽히 해결 못하니, 보다 체계적인 방어 전략을 적용하셔야 합니다.
public class TT {
/**
* XSS 및 Sql Injection Replace
* @param str
* @return
*/
public static String replaceXssAnsSqlInjection(String value) {
value = value.replaceAll("<", "<").replaceAll(">", ">");
value = value.replaceAll("\\(", "(").replaceAll("\\)", ")");
value = value.replaceAll("'", "'");
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);
}
}
반응형
'개발이야기 > Java' 카테고리의 다른 글
[Java] 문자열 체크하기 (null, 중복, 숫자, 태그) (0) | 2023.08.11 |
---|---|
[Java] 날짜 차이 계산하기 (일수 차이, 년도/월, 마지막 날짜) (0) | 2023.08.10 |
[Java] 날짜 포맷 변환하고 활용하기 사용법, 예제 (SimpleDateFormat, Date) (0) | 2023.08.09 |
[Java] 소수점 원하는 자리수 만큼 반올림 하여 출력하기 (Math 클래스) (0) | 2023.08.08 |
[Java] 랜덤 문자열 생성하기 (특수문자 포함, 대문자만, 소문자만, 숫자만, 소문자/숫자) (0) | 2023.08.07 |
댓글