Ausgaben und Escapen?

Nur so als Hinweis: mysqli_real_escape_string() ist das einzige, was Du brauchst, wenn Du die Daten in die Datenbank speicherst. htmlentities() als Beispiel ist das einzige, was Du brauchst, wenn Du die Daten aus der Datenbank wieder ausgibst.
Ich weiß, nur wenn ich htmlentities nehme, ist der Text beispielsweise nicht mehr fett.
Und genau da liegt mein Problem - leider.
 
Der kann ja dann auch nicht mehr Fett sein.
Du escapest ja die Spitzenklammern (< und >) mit deren HTML-Code (&lt und &gt) dadurch versteht der Browser dies nur als normalen Text und nicht als HTML-Anweisungen.
 
Da mache nur das real_escape_string und fertig ist ausreichend für die injections.
Dies schützt allerdings nicht für vor XSS.

Hier ist dann wirklich die Frage was ist einen wichtiger Seiten Schönheit oder Sicherheit.
Ich würde an deiner Stelle den Nutzer erlauben BB-Code zu nutzen.

Der BB-Code wird weder von htmlentities noch real_escape_string berührt.
Damit würde die Seite schön sein und sicher.
 
Da mache nur das real_escape_string und fertig ist ausreichend für die injections.
Dies schützt allerdings nicht für vor XSS.

Hier ist dann wirklich die Frage was ist einen wichtiger Seiten Schönheit oder Sicherheit.
Ich würde an deiner Stelle den Nutzer erlauben BB-Code zu nutzen.

Der BB-Code wird weder von htmlentities noch real_escape_string berührt.
Damit würde die Seite schön sein und sicher.

Ist nur beispielsweise das Problem, wenn sie nur "<b>" eingeben, es aber nicht mit "</b>" schließen.
Dann wäre die ganze Seite fett. Oder Sie könnten die ganze Seite in einen Link umwandeln.
 
Eine Möglichkeit ist es eine Methode zu schreiben, die überprüft, ob alle <b>, <u> usw. auch wieder geschlossen werden und gegebenen falls am Ende des Post die fehlenden schließenden Tags noch hinzuzufügen.
 
Bitte bau dir keine Funktion selber!
Es gibt immer irgendwelche Grenzfälle, die dann doch noch XSS-Attacken zulassen! Du findest auf der OWASP-Seite zu XSS viele Beispiele für mögliche Angriffsvektoren.

Die einzig richtige Lösung ist: HTMLPurifier, eine PHP-Bibliothek, welche alle nicht erlaubten Tags und Attribute rausfiltert.
 
Zurück