2017-01-18 2 views
0

쿼리 매개 변수를 올바르게 인코딩하는 방법. 정리 작업을 수행하는 Anti Samy를 통해 데이터를 전달합니다. 그 다음에 unescapeHtml4 메소드를 전달해야합니다. 때로는 Json을 요청 매개 변수로 사용하기도합니다 (아래 예제 1 참조). 다음과 같이요청 매개 변수에서 Json과 HTML santization을 처리하는 방법은 무엇입니까?

현재, 내 코드는 다음과 같습니다

String str = StringEscapeUtils.unescapeXml(xml); 
    ClearResult cr = antiSamy.scan(str); 
    String cleanStr = cr.getCleanHTML(); 
    String s = StringEscapeUtils.unescapeHtml4(cleanStr); 

예 1 : JSON 요청과 같은 : 나는 줄 번호 4를 제거하면, 내가 이름 quot {&을 그만 둘 것이다

& quot : MAV & & quot}

예 quot 2 : 이스케이프의 결과 다음 스크립트 : < 스크립트> alert ("hi") < 스크립트>

줄 번호 4를 유지하면 XSS에 취약합니다.

이 문제를 해결하는 방법? JSON과 HTML 요청 매개 변수를 모두 처리하려고합니다. 어떤 도움을 주시면 감사하겠습니다.

답변

2

데이터에 대해 수행 할 계획/내용을 기반으로 매개 변수를 처리하십시오.

매개 변수에 디코딩 할 json이 있으면 매개 변수에 디 센시를 사용하지 마십시오.

매개 변수에 html로 출력 할 텍스트가 포함되어 있으면 antisamy를 사용하십시오.

매개 변수에 자체로 html로 출력 할 값이 들어있는 json이 들어 있으면 먼저 매개 변수를 json으로 디코딩 한 다음 html로 출력하려는 ​​json의 개별 값에 antisamy를 사용하십시오.

안티 사이에는 특별한 목적이 있습니다. HTML 태그를 포함 할 수 있도록하려는 텍스트를 처리합니다. 다른 데이터에 반올림을 사용하지 마십시오. HTML 마크 업을 명시 적으로 허용하지 않으려는 사용자로부터받은 텍스트를 출력하는 중에 html 구문이 이스케이프 처리되는지 확인하십시오.

0

내가 아는 한, 수동으로 이스케이프 코드를 나중에 바꿀 수 있습니다. 원하는 것은 JSON과 HTML을 처리하는 함수가 하나 뿐인 것입니다. 다른 옵션은 JSON과 HTML을 분리하는 것입니다.

요구 사항과 전체 시나리오에 따라 다릅니다.