2015. 4. 8. 15:01ㆍIT/Web-Java
- 주소창에서 스크립트 실행시 시스템에서 막는 것
> 스크립트 실행은 클라이언트단에서 발생하는데, input의 value에 들어가는 것은 상관없고, 각 태그 안에 스크립트가 포함될시 XSS 발생 위험이 있음
> Popup.jsp, Sub.jsp, 각 목록, 각 상세조회 화면에서 su.getHtml()코드로 주고받는 파라미터 변환해주기
>
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 안된다 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
>> 메인 컨트롤러에서의 처리
Enumeration<?> enum1 = request.getParameterNames();
while(enum1.hasMoreElements()) {
String setKey = enum1.nextElement().toString();
String setValue = request.getParameter(setKey );
setValue.replaceAll("<", "<");
setValue.replaceAll(">", "&rt;");
setValue.replaceAll("&", "&");
request.setAttribute(setKey, setValue);
}
// 메인 컨트롤러에서 치환이 되면 화면에 다시 set해주는 부분도 치환을 해야한다.
// 예를 들어, input박스???에는 역으로 <들을 <로 바꿔주는 녀석을...
// 2014.06.17 추가 - 변환 (DB 입력)
// XSS필터 : 크로스 사이트 스크립트[Cross Site Scription]
public String getXSSFilter(String value) {
value = value.replaceAll("&", "&");
value = value.replaceAll("#", "#");
value = value.replaceAll(";", ";");
value = value.replaceAll("\\\\", "\");
value = value.replaceAll("<" , "<");
value = value.replaceAll(">" , ">");
value = value.replaceAll("\\(", "(");
value = value.replaceAll("\\)", ")");
value = value.replaceAll("'" , "'");
value = value.replaceAll("\"", """);
value = value.replaceAll("[$]", "$");
value = value.replaceAll("[*]", "*");
value = value.replaceAll("[+]", "+");
value = value.replaceAll("[|]", "|");
value = value.replaceAll("\\." , ".");
value = value.replaceAll("\\?" , "?");
value = value.replaceAll("\\[" , "[");
value = value.replaceAll("\\]" , "]");
value = value.replaceAll("\\^" , "^");
value = value.replaceAll("\\{" , "{");
value = value.replaceAll("\\}" , "}");
value = value.replaceAll("!", "!");
value = value.replaceAll("%", "%");
value = value.replaceAll(",", ",");
value = value.replaceAll("-", "-");
value = value.replaceAll("/", "/");
value = value.replaceAll(":", ":");
value = value.replaceAll("=", "=");
value = value.replaceAll("@", "@");
value = value.replaceAll("_", "_");
value = value.replaceAll("`", "`");
value = value.replaceAll("~", "~");
return value;
}
// 2014.06.17 추가 - 변환 (DB 입력)
// XSS필터 : 크로스 사이트 스크립트[Cross Site Scription]
public String getReXSSFilter(String value) {
value = value.replaceAll("&", "&");
value = value.replaceAll("#", "#");
value = value.replaceAll(";", ";");
value = value.replaceAll("\", "\\\\");
value = value.replaceAll("<" , "<");
value = value.replaceAll(">" , ">");
value = value.replaceAll("(", "(");
value = value.replaceAll(")", ")");
value = value.replaceAll("'", "'");
value = value.replaceAll(""", "\"");
value = value.replaceAll("$" , "\\$");
value = value.replaceAll("*" , "*");
value = value.replaceAll("+" , "+");
value = value.replaceAll("|", "|");
value = value.replaceAll("." , "\\.");
value = value.replaceAll("?" , "\\?");
value = value.replaceAll("[" , "\\[");
value = value.replaceAll("]" , "\\]");
value = value.replaceAll("^" , "\\^");
value = value.replaceAll("{", "\\{");
value = value.replaceAll("}", "\\}");
value = value.replaceAll("!" , "!");
value = value.replaceAll("%" , "%");
value = value.replaceAll("," , ",");
value = value.replaceAll("-" , "-");
value = value.replaceAll("/" , "/");
value = value.replaceAll(":" , ":");
value = value.replaceAll("=" , "=");
value = value.replaceAll("@" , "@");
value = value.replaceAll("_" , "_");
value = value.replaceAll("`" , "`");
value = value.replaceAll("~", "~");
return value;
}
'IT > Web-Java' 카테고리의 다른 글
Arrays.asList를 Map으로 초기화하기 (0) | 2022.12.21 |
---|---|
[자바] 동적 클래스 생성 및 멀티 쓰레드 사용한 배치 프로그램. (0) | 2016.03.07 |
시작일 종료일 넣으면 YYYY-MM 형식으로 기간 목록 만들어주는 소스 (0) | 2015.03.09 |
javax.mail.messagingexception could not connect to smtp host port 465 (1) | 2014.02.26 |