모든 사람들이 클라이언트 측 위생 처리를해서는 안된다고 말하기 전에 (실제로 SSJS에서도 작동 할 수는 있지만 실제로 클라이언트에서 처리하려고합니다) 나는 내가하려고하는 것을 분명히한다.자바 스크립트 기반 X/HTML 및 CSS 위생 처리
Google Caja 또는 HTMLPurifier과 비슷하지만 HTML의 경우와 CSS를 처리하는 허용 목록 기반 보안 접근 방식 (물론 안전하지 않지만 처음에는 문자열 형식)을 생성 한 다음 안전하지 않은 태그 또는 속성을 선택적으로 필터링하거나 무시하거나 선택적으로 이스케이프 처리 된 텍스트로 포함하거나 그렇지 않으면 이상적인 컨텍스트에서 추가 처리를 위해 응용 프로그램에보고 할 수 있도록합니다. Google Caja에서와 마찬가지로 자바 스크립트를 안전한 하위 집합으로 줄일 수 있다면 멋지 겠지만 많이 묻습니다.
내 유스 케이스는 JSONP을 통해 얻은 신뢰할 수없는 XML/XHTML 데이터 (위키 처리 전에 Mediawiki wiki에서 가져온 데이터이므로 원시가 아닌 신뢰할 수없는 XML/HTML 입력을 허용 함)를 사용하여 사용자가 해당 데이터에 대해 쿼리 및 변환 XQuery, jQuery, XSLT 등), 오프라인 사용을 허용하기 위해 HTML5를 활용하고, IndexedDB 스토리지 등을 제공하며 사용자가 입력 소스를보고 동일한 페이지에서 결과를 미리 볼 수 있도록합니다. 그들의 검색어를 가져 왔습니다.
사용자는 원하는 출력을 생성 할 수 있으므로 페이지에 JavaScript를 삽입하려는 경우 모든 작업을 수행 할 수 있습니다. 하지만 안전하지 않은 입력을 복사하지 못하도록 허용하면서 신뢰할 수없는 입력의 대상 요소를 안전하게 복사하는 코드를 추가 할 수 있다는 자신감을 갖고 싶은 사용자를 보호하려고합니다.
이 작업은 반드시 수행해야하지만 이미이 작업을 수행하는 라이브러리가 있는지 궁금합니다.
그리고이 중 하나를 구현하지 않았다면 (비록 어느 쪽이든 궁금 하긴하지만) innerHTML
을 사용하거나 문서에 삽입하기 전에 추가하는 것이 모든 경우에 안전하다는 증거가 필요합니다. 방법. 예를 들어 DOMParser
을 처음 실행하거나 innerHTML
을 사용하여 삽입되지 않은 div에 원시 HTML을 추가하여 브라우저 HTML 구문 분석에 의존하면 이벤트가 우연히 트리거 될 수 있습니까? 나는 그것이 안전해야한다고 믿지만, DOM 조작 이벤트가 삽입되기 전에 어쨌든 발생할 수 있는지 확실하지 않다.
물론, 생성 된 DOM은 그 시점 이후에 위생 처리해야하지만, DOM 객체 자체를 안전하게 작성하여 쉽게 탐색 할 수 있는지 확인한 다음 원치 않는 요소, 속성 및 속성 값을 필터링하는 것에 대해 걱정하고 싶습니다. .
감사합니다.
고마워요. 너무 바쁩니다. 좀 더 자세히 살펴보고 탈출보다는 안전한 HTML을 페이지에 넣을 수 있는지 확인하십시오. 제 목적은 재구성 된 쿼리 결과의 HTML 미리보기를 허용하는 것이지만 도움이 될 것 같습니다. 그렇지 않다면 자바 스크립트가 정말 필요하다고 생각합니다. 나는 오프라인 앱을 위해 불필요한 왕복 여행을하고 싶지 않습니다. 감사! –