Frage

Nachdem ich meine sanitize Funktionen implementiert (nach Wunsch-Spezifika), mein Chef beschlossen, die akzeptierte Eingabe zu ändern. Jetzt will er einigen spezifischen Tag und seine Attribute halten. Ich schlug vor, eine BBCode-ähnliche Sprache zu implementieren, die sicherer imho ist, aber er will nicht, weil es zu viel Arbeit sein würde.

Dieses Mal Ich mag wäre es einfach zu halten, so werde ich ihn das nächste Mal nicht töten fragt er mich wieder diese Sache zu ändern. Und ich weiß, er wird.

Ist es genug, den ersten Einsatz der strip_tags mit die Tag-Parameter zu erhalten und dann htmlentities ?

War es hilfreich?

Lösung

strip_tags nicht unbedingt in sicherem Inhalt führen. strip_tags von htmlentities gefolgt wäre sicher, dass alles, was HTML-kodierte sicher ist, aber es macht keinen Sinn machen.

Entweder der Benutzer die Eingabe Klartext, in welchem ??Fall es Ausgabe mit htmlspecialchars (bevorzugt gegen htmlentities) sein sollte, oder sie Eingabe HTML-Markup, in diesem Fall müssen Sie es richtig analysieren, gebrochen Markup Fixieren und Entfernen Elemente / Attribute, die nicht in einer sicheren weißen Liste sind.

Wenn das, was Sie wollen, verwenden Sie eine vorhandene Bibliothek, es zu tun (z. B. HTMLPurifier ). Weil es keine triviale Aufgabe, und wenn Sie es falsch haben Sie sich XSS Sicherheitslücken gegeben.

Andere Tipps

Sie können die spezifischen Tags halten strip_tags mit dieser Syntax: strip_tags($text, '<p><a>');

Das Snippet würde alle Tags außer p und a abzustreifen. Attribute werden gehalten Tags, die Sie erlaubt haben (p und a in dem obigen Beispiel).

Allerdings bedeutet dies nicht, dass die Attribute sicher sind. Hat er bestimmte Attribute wollen oder tut er alle von ihnen erlaubten Tags zu behalten? Für den ersten Fall müßten Sie jeden Tag analysieren und entfernen die, die gewünscht wird, um die Werte Desinfizieren. Um alle Attribute auf den erlaubten Tags zu halten, müssen Sie immer noch, sie sanieren. Ich würde empfehlen, htmlentities auf die Attributwerte laufen sie zu sanieren (für die Anzeige, würde ich annehmen).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top