Gibt es eine eindeutige anti-XSS library für PHP?
Ich weiß schon, wie XSS funktioniert, aber herauszufinden, all die vielen verschiedenen Arten zu injizieren bösartige Eingabe ist keine option.
Sah ich ein paar Bibliotheken gibt, aber die meisten von Ihnen sind sehr unvollständig, ineficient oder GPL lizenziert werden, wenn Sie Jungs lernen, die GPL ist nicht gut teilen kleine Bibliotheken! Verwenden Sie MIT)
InformationsquelleAutor der Frage HappyDeveloper | 2010-10-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
OWASP bietet eine encoding-Bibliothek, auf die Zeit wurde verbracht, um die Abwicklung der verschiedenen Fälle.
Veraltet: http://www.owasp.org/index.php/Category:OWASP_Encoding_Project
Jetzt bei http://code.google.com/p/reform/
und OWASP die antiXSS-spezifischen Bibliothek an: http://code.google.com/p/php-antixss/
InformationsquelleAutor der Antwort atk
htmlspecialchars()
ist die einzige Funktion, die man kennen sollte.InformationsquelleAutor der Antwort zerkms
HTMLPurifier ist die undenied beste option für die Reinigung HTML-Eingabe, und htmlspecialchars angewendet werden sollte, um nichts anderes.
Aber XSS-Schwachstellen sollten nicht gereinigtdenn solche Beiträge sind Müll sowieso. Vielmehr Ihre Anwendung Abbrechen und einen Protokolleintrag schreiben. Die besten filter-set zu erreichen XSS-Erkennung ist in der mod_security core-Regeln.
Verwende ich eine unscheinbar, aber sehr gründlich Attribut-Erkennung hier in new input()siehe _xss Methode.
InformationsquelleAutor der Antwort mario
Edit: Danke @mario für den Hinweis, dass es hängt alles vom Kontext ab. Es ist wirklich kein super Weg um zu verhindern, dass es alle für alle Gelegenheiten. Sie müssen sich dementsprechend anpassen.
Edit: ich stehe korrigiert und ist sehr dankbar für die beiden @bobince und @Rook Unterstützung in dieser Frage. Es ist ziemlich klar für mich jetzt, dass
strip_tags
wird nicht verhindern, XSS-Angriffe in keiner Weise.Habe ich gescannt, alle meine code vor der Beantwortung zu sehen, ob ich in irgendeiner Weise ausgesetzt ist, und alles ist gut, denn der
htmlentities($a, ENT_QUOTES)
ich habe mit vor allem zu bewältigen W3C.Wie gesagt, ich habe aktualisiert die Funktion Balg, etwas nachzuahmen, der, den ich verwenden. Ich finde immer noch
strip_tags
schön zu haben, bevor htmlentities, so dass, wenn ein Benutzer versucht, um tags einzugeben, die Sie nicht verschmutzen das endgültige Ergebnis. Sagen Benutzers eingegeben werden:<b>ok!</b>
es ist viel schöner zu zeigen alsok!
als Ausdruck der vollständige text htmlentities umgewandelt.Danke Euch beiden sehr für die Zeit nehmen, zu Antworten und zu erklären.
Wenn es aus dem internet-Benutzer:
Wenn die aus dem backoffice... nicht.
Es gibt absolut gültige Gründe, warum jemand an der Gesellschaft können, müssen Sie javascript für diese oder jene Seite. Es ist viel besser in der Lage sein zu melden, und die Schuld, als nach dem Herunterfahren des uers.
InformationsquelleAutor der Antwort Frankie
Ich mag htmlpurifier gut, aber ich sehen, wie es könnte ineffizient sein, da es ziemlich groß ist. Auch, es ist LGPL, und ich weiß nicht, ob das fällt unter Ihre GPL-Verbot.
InformationsquelleAutor der Antwort grossvogel
Neben zerkms Antwortwenn Sie feststellen, Sie brauchen, um zu akzeptieren eingereichten HTML (von einem WYSIWYG-editor, zum Beispiel), benötigen Sie einen HTML-parser zu bestimmen, was kann und was kann nicht eingereicht werden.
Ich verwenden und empfehlen HTML Purifier.
Hinweis: gar nicht versuchen Verwendung regex 🙂
InformationsquelleAutor der Antwort alex
Ich bin überrascht, es ist nicht erwähnt worden hier, aber ich bevorzuge htmlAwed zu htmlPurifier. Es ist up-to-date, schön lizenziert, sehr klein und sehr schnell.
InformationsquelleAutor der Antwort Synchro