HTML Input sicher/flexibel verarbeiten
Peter Mairhofer
- php
0 Matze0 Peter Mairhofer
Hallo!
Auf einer öffentlich zugänglichen Seite möchte ich dass der User mit WYSIWYG seinen Content selbst erstellen/formatieren kann.
Ich verwende dafür TinyMCE, danke für diesen Tipp hier aus dem Forum!
Nun stelle ich mir aber die Frage wie ich den Input in PHP *sicher* verarbeite sodass der User keinen Unfug reinschreiben kann (das ganze wird - nona - in eine Datenbank geschrieben).
Manuell das ganze durchparsen - da werd ich zum Schwammerl.
Gibts da was vorgefertigtes das das für mich erledigt?
Danke,
Peter
Hallo,
Nun stelle ich mir aber die Frage wie ich den Input in PHP *sicher* verarbeite sodass der User keinen Unfug reinschreiben kann (das ganze wird - nona - in eine Datenbank geschrieben).
Ich glaube du suchst mysql_real_escape_string().
Grüße, Matze
Hallo,
Nun stelle ich mir aber die Frage wie ich den Input in PHP *sicher* verarbeite sodass der User keinen Unfug reinschreiben kann (das ganze wird - nona - in eine Datenbank geschrieben).
Ich glaube du suchst mysql_real_escape_string().
Hmm, nein, eher nicht. Wegen dem Escapen der SQL Statements mache ich mir weniger Gedanken, das macht Zend Framework für mich.
Mir geht es um Site-Cross-Scripting Attacken & Co.
Was ist, wenn ein User einfach ein JavaScript eingibt statt "braven" HTML-Code???
echo $begrüßung;
Ich glaube du suchst mysql_real_escape_string().
Hmm, nein, eher nicht. Wegen dem Escapen der SQL Statements mache ich mir weniger Gedanken, das macht Zend Framework für mich.
Mir geht es um Site-Cross-Scripting Attacken & Co.
Das Zend Framework maskiert auch die HTML-eigenen Zeichen. Dafür hat Zend_View die Methode escape(), und allgemein in PHP gibt es htmlspecialchars() für diesen Fall.
Was ist, wenn ein User einfach ein JavaScript eingibt statt "braven" HTML-Code???
Dann musst du für dich definieren, was du unter brav zählst und was nicht. Anschließend läuft es wohl auf Parserbau hinaus, denn mit einfacher Mustererkennung wirst du schnell an Grenzen stoßen. Sieh dir mal die BBCode-Parserklasse für PHP an, dann weißt du ungefähr, was auf dich zukommt.
echo "$verabschiedung $name";
Hallo,
Was ist, wenn ein User einfach ein JavaScript eingibt statt "braven" HTML-Code???
Was soll dann sein? Wenn ich es richtig verstanden habe,
willst du die eingegebenen Daten doch in einer Tabelle speichern oder?
Ich geh mal einfach davon aus, dass das über MySQL passiert.
Da MySQL kein JavaScript interpretiert, kannst du davon auch soviel
dir einfällt in die Tabelle schreiben ohne das etwas passiert.
Natürlich solange du die MySQL-relevanten Zeichen escapest (Klasse Denglisch...SCNR).
Die Ausgabe soll dann wahrscheinlich in einer HTML-Umgeben geschehen.
Dazu benutzt du dann die angesprochenen htmlspecialchars.
Dann solltest du sämtliche Zeichen sehen, ohne das der Code ausgeführt wird.
Grüße, Matze
» [...]
htmlspecialchars macht GENAU das wofür ich keinen WYSIWYG Editor bräuchte: Er entfernt einfach alle Tags!!
Ich brauche etwas mit dem Input vom User dargestellt werden kann wobei einfache HTML Formatierungen erlaubt sein dürfen.
Bis jetzt verwende ich strip_tags mit Angabe der erlaubten Tags. Leider filtert dieser aber keine Attribute wie onLoad="", onClick usw.
mfg,
Peter
Ahoi Peter Mairhofer,
Ich brauche etwas mit dem Input vom User dargestellt werden kann wobei einfache HTML Formatierungen erlaubt sein dürfen.
dann erlaube kein html direkt sondern nur BBCode den du durch die html entsprechungen ersetzt.
MfG