2012-07-13 1 views
3

저는 XSS 취약점으로 가득 찬 1000 개 이상의 JSP 파일의 큰 코드 기반을 물려 받았습니다.request.getParameter는 XSS로부터 보호합니다. 가장 좋은 방법은 무엇입니까?

코드는 개별적으로 그들 모두를 통해 갈 필요없이

<%= request.getParameter("theparam")%> 

out.println("some stuff before"+request.getParameter("theparam")+"and some other stuff"); 

String myVar = request.getParameter("theparam"); 
out.println(myVar); 

나는 모든 파일을 보호 할 가득합니다.

최선의 방법은 무엇입니까?

  • 모든 소스 파일에 "request.getParameter ("XX ")"을 "StringEscapeUtils.escapeHtml (request.getParameter ("XX "))에 '모두 바꾸기'합니까?

  • 수 ? 기본값은 stringescapeutils.escapehtml하기 때문에 내가 어떻게 든() ""(request.getParameter를) 기능 'request.getParameter를'무시;

thnx

답변

2

나는 이것이 가장 좋은 방법입니다 말하고 있지 않다, 그러나 :

어떻게 든 'request.getParameter'함수를 재정의 할 수 있으므로 기본값은 stringescapeutils.escapehtml (request.getParameter ("")); ?

은 서블릿 필터를 사용하고 HTTP 서블릿 요청을 래핑하여 쉽게 얻을 수 있습니다. 이 접근법은 How to add validation logic to HttpServletRequest에 설명되어 있습니다.

그러나 가장 포괄적 인 접근 방식은 표시 할 때 이스케이프 처리하는 것이 바람직하며, JSP로만 표시하는 것이 가장 바람직합니다. 너무 나쁜 당신은 또한 서블릿에서 HTML을 생성합니다. 참조 : Java 5 HTML escaping To Prevent XSS.

+0

누구나 정규 분포합니까? 의 모든 항목을 바꾸고 싶습니다. request.getParameter ("thischangesallthetime") 을 으로 바꿉니다. stringescapeutils.escapehtml (request.getParameter (""))); 정규 표현식으로 대체 할 수 있습니까? – user1194465

+0

@ user1194465 : 절대적으로 가능하지만 다른 질문을 올리십시오 (수퍼 유저에게 더 적합할까요?). 여기에서 후속 조치를 취하십시오. 또한 이것이 좋은 접근 방법인지 여부를 확신하지 못합니다. 읽을 때가 아니라 표시 할 때 매개 변수를 이스케이프 처리해야합니다. –

+0

좋아, 내가 해냈어 http://stackoverflow.com/questions/11500695/notepad-regulare-expression-to-replace] – user1194465