2010-01-18 4 views
5

나는 PHP 마크 다운 출력에서 ​​필터 XSS 취약점을하는 데 도움이 간단한 PHP 라이브러리를 찾고 있어요. I.E.PHP 마크 다운 XSS는 소독제

[XSS Vulnerability](javascript:alert('xss')) 

내가 주위에 약간의 독서를 해 봤는데 내가 주제에 찾은 최고의 여기 this 질문을했다 : PHP 마크 다운과 같은 일을 구문 분석합니다.

HTML 정수기는 (거의 단지) 해결 방법이지만 더 일반적인 것이 있는지 궁금합니다. HTML Purifier는 구성이 어려울뿐만 아니라 필요에 따라 약간 강력 해 보입니다. 그렇게 해본 후에도 훌륭하게 작동하는 것처럼 보입니다.

아무것도는 좀 덜 강력하고 구성 할 수 있지만 여전히 단단한 일을 할 수 밖에 다른 사람이 있습니까? 아니면 그냥 내 필요에 맞게 HTML Purifier를 구성하려고합니다.

명확한 편집 : 나는 모서리 같은 것을 자르려고하지 않습니다. HTML 정수기는 많은 양질의 제어 기능을 제공하며 단순한 소규모 프로젝트의 경우 아무 것도 사용하지 않아도 많은 기능을 사용할 수 있습니다. 이간단 또는 덜 강력한 뭔가를 물어 때부터오고있는 곳입니다.

또한 마지막 주, 나는 하지는 등의 htmlspecialchars(), strip_tags() 또는 아무것도를 사용하는 제안을 찾고 있어요. 이미 PHP Markdown Extra에 HTML을 삽입하는 것을 비슷한 방식으로 삭제하는 것을 허용하지 않습니다. PHP Markdown의 XSS 취약점을 방지하는 방법을 찾고 있습니다. 출력.

감사합니다.

답변

6

내가 HTML Purifier보다 다른 도구 들어 본 적이없는, 즉를 수행하는 - 그리고 HTML 정수기는 참으로 좋은 평판을 가지고있다.

어쩌면 그것의 "약간의 강력한"와 "을 구성하는 고통"예; PHP에서 가장 많이 사용되고 테스트 된 솔루션 일 수도 있습니다. ;; 그러한 중요한 구성 요소를 선택해야 할 때 중요한 기준입니다.

투자를하여 반일에이라도 제대로 구성하더라도 내가 상황에 따라 HTML 정제기를 선택할 수 있습니다.

+0

그래, 내가 그것에 대해 너무 신경 쓰지 않는 것처럼 내 의견이 내려 왔다고 생각하는데, 사실이 아니다. 좀 더 일반적인 것이있을 것이라고 기대하고있었습니다. HTML 정수기는 현재 프로젝트에서 필요하지 않은 자체의 모든 측면에 대해 세분화 된 제어 기능을 제공합니다. 아무것도 사용하지 않거나 극도로 기본적인 것을 사용하는 것은 옵션이 아닙니다. 있잖아? – anomareh

3

너무 강력한 같은 것은 없다. "Sanitizing"HTML은 입니다. 당신이 그것을 더 쉽게 처리하기 위해 잘라낸 모서리는 몰래 침입하게 될 것입니다. 동급 최강의 평판을 가진 복잡한 HTMLPurifier조차도 과거에는 위험한 마크 업을 여러 가지 방법으로 몰래 사용했습니다! 텍스트 마크 업 솔루션은 위험한 HTML을 출력 할 수있는 경우

그러나, 그것은 결핍 및 IMO 교체해야합니다. PHP Markdown이 허용하는 경우 javascript: URL을 통해 매우 슬프고 근본적인 결함이 있으며 나는 다른 것을 올바르게 얻기 위해 그것을 신뢰하지 않을 것이라고 생각합니다.

+0

HTML Purifier의 문제점은 자기 자신의 모든면에서 세분화 된 컨트롤을 제공한다는 것입니다. 나는 모서리를 자르려고하지 않고, 작은 프로젝트를위한 구성과 관련해서는 좀 더 단순합니다. 그 작업은 제가 세밀한 제어가 필요하지 않습니다. 아무 것도 사용하지 않는 것도 옵션이 아닙니다. PHP Markdown이 AFAIK로가는 한, Markdown에 대한 유일한 PHP 구현입니다. Markdown을 유효한 HTML로 파싱하는 것이 목적입니다. 이 링크는 유해 할 수 있지만 유효한 HTML입니다. 그것은 안전하거나 보안 목표로 광고하지 않습니다. – anomareh

0

HTMLPurifier는 훌륭한 답변이며 아마도 가장 강력한 솔루션입니다.

Markdown을 비교적 안전한 방법으로 사용할 수도 있지만 올바른 방법으로 사용해야합니다. Markdown을 안전하게 사용하는 방법에 대한 자세한 내용은 here을 참조하십시오. 안전하게 사용하는 방법에 대한 자세한 내용은 링크를 참조하십시오. 그러나 짧은 버전은 safe_mode을 설정하고 enable_attributes=False을 설정하는 최신 버전을 사용하는 것이 중요합니다.

1

나는 제안을했고, 나는 asked on SO to find out if it would work하지만 불행히도,이 질문에 대한 답은 닫히고 표시되었다.

내 제안은 가격 인하의 코드를 수정 만 링크 및 이미지 소스가 필요한 모든 공통 프로토콜을 포함 http://, https:// 또는 ftp:// 시작 할 수있다. 링크가 이들 중 하나로 시작하지 않으면 출력에 변경되지 않은 채로 두어야합니다.