2016-07-29 3 views
-1

내 응용 프로그램은 스프링 MVC 응용 프로그램이며 주석 (스프링 3.1.1을 사용하지만 상당히 오래된 응용 프로그램)을 사용하지 않습니다.요청 매개 변수의 HTML 인코딩

나는 curl과 같은 도구 또는 웹 브라우저 URL에서 직접 호출 할 수있는 JSP 페이지가 있습니다. URL은 내가 요청 매개 변수 "mylocation"을 인코딩 html로 어떻게 요청 매개 변수 "mylocation"

를 읽고 SimpleFormController 같은의 구현을 호출 위의 URL을 호출에 위치

http://localhost:8080/testdomain/registeruser.do?mylocation=fr 

라는 요청 매개 변수를 받아 들인다 . 내 컨트롤러의 요청 [request.getParameter ("mylocation")]에서 매개 변수를 읽기 전에 HtmlUtils.htmlEscape (request.getParameter ("mylocation"))를 호출하면 충분합니다.

양식이 없으므로주의하십시오. 앞에서 설명한대로 mylocation의 입력 매개 변수를 백업하면 명령 줄 도구 또는 브라우저 URL에서이를 호출 할 수 있습니다.

+0

왜 인코딩 하시겠습니까? 당신은 mylocation 매개 변수에 대한 올바른 값을 얻었습니까? 이것이 영숫자 값일 경우 일반적으로 이스케이프/이스케이프 할 필요가 없습니다. – Damian

+0

XSS의 위협이있을 수 있습니다. 악의적 인 의도가있는 스크립트를 전달할 수 있습니다. HTML 인코딩이 스크립트 특수 문자를 인코딩 된 형식으로 변환한다는 것을 이해했습니다. – megan

+0

그 매개 변수로 무엇을하고 있습니까? js 변수 안에 데이터를 출력하는 경우 HTML Escaping으로 충분하지 않습니다. 그러나 신뢰할 수없는 단일 매개 변수 만 있으면 간단하게 검증 할 수 있습니다. 예를 들어 출력을 생성하기 전에 myLocation 값이 Enum 유형에 존재하는지 확인합니다. MyAllowedLocations.valueOf (myLocation); –

답변

0

는 다른 두 가지가 있습니다

1) URL 인코딩/디코딩 -이 서버에 GET 매개 변수를 통과 할 수 있도록 전용입니다. 서버가 일부 특수 문자 "?"를 이스케이프해야하기 때문에 인코딩이 필요합니다. , "&"쿼리 문자열. 일반적으로 Tomcat과 같은 웹 서버에서 처리합니다.

2) XSS를 방지하려면 Jsoup을 사용할 수 있습니다. 웹 페이지의 매개 변수 값을 표시하는 경우에만 필요합니다.

JSF와 같은 일부 프레임 워크는 XSS를 자동으로 방지 할 수 있습니다. 웹 페이지에 HTML이 표시되면 탈출 할 수 있습니다.

+0

URL 인코딩은 HTML 인코딩과 동일합니까? 둘째, 매개 변수의 값이 웹 페이지에 표시 될 경우에만 XSS가 필요하다는 것에 동의하지 않습니다. 요청 매개 변수로 바인딩되어 XSS 공격을 유발할 수있는 iframe 또는 innerHTML을 사용하는 것과 같은 시나리오가있을 수 있습니다. JSoup에 대한 문의 주셔서 감사합니다. 더 자세히 살펴 보겠습니다. – megan

+0

아니요, XSS를 방지하려면 HTML 인코딩 만 필요합니다. 스크립트는 브라우저 주소 표시 줄에서 실행되지 않으므로 XSS를 방지하기 위해 URL을 인코딩/디코딩 할 필요가 없습니다. – Damian

+0

브라우저 URL에서 요청 매개 변수로 스크립트 태그 (자바 스크립트 태그)를 전달하거나 curl 명령을 사용하지 못하는 이유는 무엇입니까? 이 스크립트가 인코딩되지 않고 코드 내에서 자체적으로 실행될 수 있다면 어떨까요? 실행될 페이지에 렌더링 할 필요는 없습니다. 또한이 링크를 참조하십시오. 몇 가지 흥미로운 예제가 있습니다. https://developer.salesforce.com/page/Secure_Coding_Cross_Site_Scripting#Sample_vulnerability – megan

관련 문제