(JSP) replaceAll 을 이용해 특수문자(",?,\) 제거하기 JSP_Java

정규표현식을 쓰지 않고, 단순히 ‘replaceAll’ 함수를 이용해 일부 특수문자를 제거하려면 약간의 요령이 필요하다.

select * from \"member\" where '%\"test\"%' order by %test2%!&?| \\ ..

위와 같은 문자열이 있다고 가정해보자.
여기에는 몇 가지 특수문자들이 포함되어 있어 추후에 문제를 일으킬 여지가 있다.
‘쌍 따옴표(")’ 는 데이터베이스 쿼리(query) 구문을 실행할 때 오류를 발생시키고, ‘\’ 문자나 ‘?(물음표)’ 같은 문자, 그리고 ‘%’ 같은 문자들은 특수한 경우가 아니면 허용하지 않는 것이 좋다.
혹시, 이런 문자들이 사용되어 페이지 에러나 해킹 등의 위험이 발생할 수 있다면, 해당 문자들을 없애는 것이 좋다.
그런데, 몇몇 특수문자들을 지우려면 약간의 요령이 필요하다.

<%
String str = "select * from \"member\" where '%\"test\"%' order by %test2%!&?| \\ ..";

str = str.replaceAll("%","");
str = str.replaceAll("'",""); //&#39;
str = str.replaceAll("\"",""); //&quot;
str = str.replaceAll(",",""); //&#44;
str = str.replaceAll("|","");
str = str.replaceAll("\n","");
str = str.replaceAll("\r","");
str = str.replaceAll("\r\n","");
//str= str.replaceAll("'","′"); // 작은 따옴표를 ′ 로 치환

//위의 구문은 기본적인 방법으로, 그냥 그대로 하면 되기 때문에 쉽다.

str = str.replaceAll("\\\\","");
//jsp 에서는 ‘\’ 한개만 페이지에 작성하면 페이지 에러가 난다.
//‘\\’ 두개 쓰면 ‘\’ 한개가 화면에 표시된다.
//‘\\’ 두개 쓴 문자열을 없애려면 ‘\’ 네개를 사용하여 ‘\\\\’ 로 써준다.
str = str.replaceAll("[?]","");
// 특수문자 ‘?’ 를 문자처럼 취급하기 위해 ‘[]’ 기호를 사용하여 감싸준다.

out.println(str);
%>

위와 같은 방법으로, 정규 표현식을 쓰지 않고, ‘replaceAll’ 함수를 이용해 이해하기 쉽고 수정하기 쉽게 코드를 만들 수 있다.



핑백

  • 웹짱 : replace 문자열 처리 2013-08-02 08:29:17 #

    ... http://mwultong.blogspot.com/2006/10/java-string-replace-all.html 특수문제 제거- replacehttp://fendee.egloos.com/10957196대용량 String 처리 - replacehttp://cafe.naver.com/msjava/737 ... more

  • F.G. : 2016년 내 이글루 결산 2017-03-20 22:42:04 #

    ... 바꾸기 13657 2 윈도우7 업데이트 KB3112343 제거 및 알림 숨김 10925 3 (JSP) replaceAll 을 이용해 특수문자(",?,\) 제거하기 10097 4 하드디스크 '액세스할 수 없습니다' 에러가 발생한 경우(RAW오류), chkd ... more

덧글

  • 감사합니다 2013/02/21 20:24 # 삭제 답글

    참고 잘하고 갑니다^^
    찾았던 정보라 감격ㅋ
댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.


통계 위젯 (화이트)

121654
4273
10471053

google_myblogSearch_side

▷검색어

Flag Counter style2