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("\"", """);
sValid = sValid.replaceAll("\'", "'");
sValid = sValid.replaceAll("·", "·");
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;
}
'언어 > Java' 카테고리의 다른 글
[Java] 다중검색필터 (checkbox)로 보낸 array값들 checkbox로 checked하기 (0) | 2025.02.23 |
---|---|
[Java] 파일 업로드 취약점 (0) | 2025.02.16 |
[Java] 로그인 기능 만들기 (0) | 2025.02.16 |
[Java] session 저장하기 , 가져오기, 지우기 (0) | 2025.02.16 |
[java] Apache Struts2 보안 업데이트 (0) | 2025.02.08 |