오래된 jdk 버전에 따른 replace 사용안내

보안관련 점검을 하다가 스로스사이트 스크립트 문제가 있어서 <script></script> 형태의 공격을 막을 일이 생겼습니다.

 

JSP에서 단순하게 <, > 등의 기호만 치환문자로 변경을 하여 서버단으로 넘기지는 않고 간단히 해결 하려고 했는데 한가지 문제가 생기더군요. 로컬에서 컴파일 1.5, 1.4등에서 테스트를 할 때에는 아무런 문제가 안생기다가 서버에 올리기만 하면 오류가 생겼습니다.

 

jdk 1.4 버전 이하에서의 replace 사용

결론 부터 말씀드리자면 제공 되는 replace 함수나 replaceAll 등은 전부 문제가 생겨서 함수 자체를 만들어서 사용하기로 하였습니다. 왜 안되는지 확인하기에 귀찮아서 잘 되는걸로 그냥 사용을 하게 되었네요.

 

 

저와 비슷한 사례가 보여서 여기에서 제공된 replace함수를 jsp에 생성을 해서 적용을 하여 간단하게 해결을 하였습니다.

출처 : https://okky.kr/article/133503

 

replace함수
0.00MB

 

/**
* 해당 문자열을 다른 문자열로 대체한다.
* @param strString 문자열
* @param strOld 대상 문자열
* @param strNew 대체할 새로운 문자열
* @return
*/
public static String replace(String sStrString, String sStrOld, String sStrNew) {
if (sStrString == null)return null;
for (int iIndex = 0 ; (iIndex = sStrString.indexOf(sStrOld, iIndex)) >= 0 ; iIndex += sStrNew.length())
sStrString = sStrString.substring(0, iIndex) + sStrNew + sStrString.substring(iIndex + sStrOld.length());

return sStrString;
}