2010-07-04 3 views
6

내 목표는 최종 사용자가 입력 한 HTML을 가져와 <script>과 같은 안전하지 않은 특정 태그를 제거하고 문서에 추가하는 것입니다. 누구든지 html을 위생적으로 처리 할 수있는 훌륭한 자바 스크립트 라이브러리를 알고 있습니까?좋은 Javascript 기반 HTML 파싱 라이브러리가 있습니까?

내가 주변 검색 및 John Resig's HTML parser, Erik Arvidsson's simple html parserGoogle's Caja Sanitizer을 포함하여 몇 가지 온라인을 찾았지만, 사람들은이 라이브러리를 사용하여 좋은 경험이 있었다 여부에 대해 내가 많은 정보를 찾을 수 없어, 나는 걱정들이 그 임의의 HTML을 처리 할만큼 강력하지는 않습니다. 위생을 위해 Java 서버에 HTML을 보내는 것이 나을 것입니까?

+4

서버 쪽에서 위생 처리를하는 것이 더 효과적이라는 것을 알면 특별한 노력을 기울일 가치가 없을 수도 있습니다. 클라이언트 측 살균제가 항상 서버 측과 동일한 결과를 항상 제공하지 않는 한, 그만한 가치는 없을 것입니다. –

답변

2

jQuery으로 HTML을 구문 분석 할 수 있지만 블랙리스트 기반 (즉, 필터링) 접근 방식이 실패 할 것이라는 확신이들 것입니다 - 아마도 "필터링 방식"기반 접근 방식이 필요하고 궁극적으로 원하지 않습니다. 어쨌든 보안을 위해 JavaScript를 사용하는 것입니다. 참조 어떤 경우에는이 같은 DOM 구문 분석에 대한 jQuery를 사용할 수 있습니다

var htmlS = "<html>etc.etc."; 
$(htmlS).remove("script"); /* DONT RELY ON THIS FOR SECURITY */ 
+0

좋은 지적. 실제로 jQuery 래퍼 자체는 필요하지 않을 수도 있지만 일을 더 쉽게 만들 수 있습니다. 브라우저 자체에서 파싱을 처리하도록하고 사용 가능한 DOM 메서드를 사용하여 원하는대로 수행하십시오. – Matchu

+3

어떻게 설명합니까? – icktoofay

+0

@icktoofay yep edited my bad –

2

난 그냥 위생 내 자바 서버에 HTML을 보내는 것이 더겠습니까?

예.

필터링 "안전하지 않은"입력은 서버 측에서 수행해야합니다. 다른 방법으로는 할 수 없습니다. "클라이언트 측"이 웹 브라우저 일 수도 있고 스크립트가있는 봇일 수도 있기 때문에 클라이언트 측 필터링을 수행 할 수 없습니다.

+2

클라이언트가 수행해야하는 필터링을 수행하지 않아서 다른 사용자에게 피해를 줄 수 있으므로 서버에서 안전하지 않은 입력을 필터링해야합니다. 그러나 이것은 안전하지 않은 출력을 필터링하고 있으며, 필터링하지 않는 클라이언트는 자체를 해칠뿐입니다. 따라서 Javascript로이를 수행하는 것이 좋습니다. –

+0

@bart "필터링하지 않는 클라이언트는 자체적으로 해를 입을뿐입니다. 따라서 Javascript로 처리하면 문제가 없습니다."- 하나의 손상된 사용자가 다른 사용자에게 영향을 줄 수있는 액세스 권한을 가질 수 있으므로이 사실이 완전히 적용되지 않습니다. –

+0

손상된 사용자가 할 수있는 일 모든 종류의 나쁜 것들. 서버에서 스크립트 태그를 필터링하면 렌더링 할 때 스크립트 태그를 다시 넣을 수 있습니다. 그렇지 않으면 불편을 끼쳐 드려 죄송합니다. 악의적 인 코드를 직접 실행하십시오. –