2012-07-05 2 views
1

저는 HTML 정수기 http://htmlpurifier.org을 사용하여 WYSIWYG 편집기에서 내용을 필터링하기 시작했습니다. 콘텐츠는 동일한 그룹의 사용자 또는 다른 사용자에게 다시 표시됩니다. 시스템에 다른 그룹이 있으며 데이터 무결성이 매우 중요합니다.HTML 정수기 필터 인바운드 또는 아웃 바운드 또는 둘 다?

나는 PHP를 사용하고 있으며 컨텐츠는 MySQL 데이터베이스에 저장되어있다.

HTML Purifier는 많은 프로세서 성능을 사용하므로 인바운드 콘텐츠에만 사용하고 필터없이 데이터베이스에서 바로 아웃 바운드 콘텐츠를 표시하고 싶습니다. 그것은 그것이 안전해야하므로 필터링되었습니다 간단하게 들리지만, 나는 100 % 확실하지 않다, 그것은 안전한가요?

수신 허용 목록 인 '[스타일], strong, em, u, h1, h2, h3, h4, h5, h6, li, ol, ul, span [스타일], div [스타일] , ins 'del'

EDIT :이 사이트는 http://htmlpurifier.org/docs/enduser-slow.html에서이를 수행 할 것을 제안했지만 여기서는 높은 중요성 때문에 몇 가지 의견을 원합니다.

+0

이보고에서이 ... 당신이 스타일을 허용하여 무슨 일을하는지 확인, 또는 단지 fews CSS 스타일을 허용 OWASP의 [XSS Prevention Cheat Sheet] (https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet). – Adi

답변

1

데이터베이스로 보낼 때 입력 내용을 살균하거나 CPU 집중적 인 단계이므로 초당 페이지 뷰 수가 몇 개인 경우 큰 문제가됩니다.

그러나 데이터베이스의 모든 행이 삭제되었는지 또는 언젠가는 XSS에 자신을 노출해야합니다 (편집하거나 항목을 추가하고 데이터베이스의 기존 행을 생각할 때마다 확인하십시오).

작은 팁 : 공간을 감당할 수 있으면 위생 처리 된 입력과 위생 처리되지 않은 입력을 보관하십시오. 언젠가 매개 변수에서 뭔가를 변경해야하거나 HTMLPurifier에서 주요 0 일이있는 경우 전체 테이블을 업데이트 할 수 있습니다. 그러나,이 일일 할 경우 효과가 매우주의)

편집 :

+0

감사합니다. Ugo, 나는 wysiwyg 입력 된 콘텐츠에만 정수기를 사용하고 있습니다. 다른 모든 것들은 표준 php 필터를 사용하여 일반 텍스트를 엄격하게 제거하고 유효성을 검사합니다. 스타일 속성 내에서 허용하도록 제안 하시겠습니까? – PaulMrG

+0

색상, 글꼴 크기, 글꼴 두께, 배경색, 텍스트 정렬 등과 ​​같은 것만 큼 없습니다. 위치, 위, 왼쪽, 여백 등을 피하십시오. –

관련 문제