2010-01-18 13 views
5

Ich bin auf der Suche nach einer einfachen PHP-Bibliothek, die XSS-Schwachstellen in PHP Markdown-Ausgabe zu filtern hilft. I.E. PHP wird Markdown Dinge analysieren, wie:PHP Markdown XSS Sanitizer

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

Ich habe um etwas zu lesen getan und das Beste, was ich zu diesem Thema hier war this Frage gefunden habe.

Obwohl HTML Purifier aussieht wie die beste () fast nur) Lösung Ich frage mich, ob es da draußen etwas allgemeiner war? HTML Purifier scheint ein bisschen robust zu sein, besonders für meine Bedürfnisse, und es ist auch ein Problem, es zu konfigurieren, obwohl es so aussieht, als würde es nach diesem Vorgang funktionieren.

Gibt es noch etwas anderes, das ein wenig weniger robust und konfigurierbar ist, aber trotzdem eine solide Arbeit leistet? Oder sollte ich mich einfach einmischen und versuchen, HTML Purifier für meine Bedürfnisse zu konfigurieren?

EDIT FÜR CLARITY: Ich bin nicht auf Ecken oder ähnliches. HTML Purifier bietet nur eine sehr feine Kontrolle und für ein einfaches kleines Projekt wird viel Kontrolle einfach nicht benötigt, obwohl auch nichts zu verwenden keine Option ist. Hier kam ich her, als ich nach etwas fragte einfacher oder weniger robust.

Auch eine letzte Anmerkung, ich bin NICHT für Anregungen suchen htmlspecialchars(), strip_tags() oder etwas dergleichen zu verwenden. Ich verbiete bereits eingebettetes HTML in PHP Markdown Extra, indem es es in ähnlicher Weise bereinigt. Ich suche nach Möglichkeiten, XSS-Sicherheitslücken in PHP Markdown OUTPUT zu verhindern.

Danke.

Antwort

6

Ich habe noch nie von einem anderen Werkzeug als HTML Purifier gehört, um das zu tun - und HTML Purifier hat tatsächlich einen guten Ruf.

Vielleicht ist es „ein wenig robust“ und „ein Schmerz zu konfigurieren“, ja; aber es ist wahrscheinlich auch die am häufigsten verwendete und getestete Lösung in PHP ;; und das sind wichtige Kriterien, wenn Sie solch eine wichtige Komponente wählen müssen.

Auch wenn es bedeutet, investieren einen halben Tag, um es richtig zu konfigurieren, wenn ich in Ihrer Situation wäre, würde ich wahrscheinlich HTML Purifier wählen.

+0

Ja, ich nehme an, meine Kommentare dazu kamen, als ob es mir nicht so wichtig wäre, was nicht stimmt. Ich hatte nur gehofft, dass da draußen etwas allgemeiner wäre. HTML Purifier gibt Ihnen eine fein abgestimmte Kontrolle über jeden Aspekt, den ich für mein aktuelles Projekt nicht wirklich brauche. Aber auch nichts oder etwas extrem Einfaches ist keine Option. Wissen Sie? – anomareh

3

Es gibt nicht so etwas wie zu robust. "Sanitisieren" HTML ist hart. Alle Ecken, die du geschnitten hast, um es einfacher zu verarbeiten, führen wahrscheinlich dazu, dass Exploits durchkommen. Selbst der komplizierte alte HTMLPurifier, mit seinem besten Ruf, hatte mehrere Möglichkeiten, in der Vergangenheit gefährliche Markups zu schleichen!

Wenn Ihre Text-Markup-Lösung jedoch in der Lage ist, gefährliches HTML auszugeben, ist sie fehlerhaft und sollte IMO ersetzt werden. Wenn PHP Markdown javascript: URLs durchlässt, dann ist das ein ziemlich beklagenswerter, grundlegender Fehler und ich glaube nicht, dass ich ihm vertrauen würde, um etwas anderes richtig zu machen.

+0

Mein Problem mit HTML Purifier war es gibt Ihnen eine immense Menge feinkörniger Kontrolle über jeden Aspekt von sich selbst. Ich bin nicht auf der Suche nach Kürzungen, nur ein bisschen einfacher bei der Konfiguration als für ein kleines Projekt, an dem ich arbeite. Ich brauche diese feinkörnige Steuerung nicht. Aber auch nichts zu verwenden ist keine Option. Soweit PHP Markdown geht AFAIK ist es die einzige PHP-Implementierung von Markdown, die ich kenne und es ist, Markdown in gültige HTML zu analysieren. Dieser Link ist ein gültiger HTML-Code, obwohl er schädlich sein kann. Es bedeutet nicht, dass Sicherheit oder Sicherheit ein Ziel ist. – anomareh

0

HTMLPurifier ist eine feine Antwort und vielleicht die robusteste Lösung.

Es ist auch möglich, Markdown auf eine relativ sichere Weise zu verwenden, aber Sie müssen es in der richtigen Weise verwenden. Weitere Informationen zur sicheren Verwendung von Markdown finden Sie unter here. Weitere Informationen zur sicheren Verwendung finden Sie unter dem Link. Die Kurzversion lautet jedoch: Es ist wichtig, die neueste Version zu verwenden, um safe_mode festzulegen und enable_attributes=False festzulegen.

1

Ich hatte einen Vorschlag, und ich asked on SO to find out if it would work, aber leider wurde es geschlossen und markiert als ein Duplikat zu dieser Frage.

Mein Vorschlag ist Modifizieren Abschlags des Codes und ermöglicht nur Links und Bildquellen mit http://, https:// oder ftp:// zu starten, die alle erforderlich, um die gemeinsamen Protokolle abdeckt. Wenn die Verknüpfung nicht mit einer dieser Verbindungen beginnt, sollte sie in der Ausgabe unverändert bleiben.