PHP wie xss etc. bei html input verhindern?
Bisher war das kein Problem, bishrt habe ich einfach htmlspecialchars() verwendet, allerdings habe ich jetzt html inout der html code bleiben muss, also eigentlich müsste man nur alles gefährliche wie <?php ?> und <script></script> sowie <link> und <meta> rausfiltern, wie gehe ich da am besten vor ohne den code in irgendeiner weise auszuführen?
3 Antworten
Wozu muss das HTML-Code bleiben? Wenn es um Textformatierung seitens des Nutzers geht: Verwende lieber etwas wie Markdown oder einen fertigten WYSIWYG-Editor wie TinyMCE. Da eine eigene Suppe zu kochen und zu versuchen nur "böses" HTML zu filtern wird definitiv schief gehen.
GuteFrage verwendet im übrigen auch einen solchen WYSIWYG-Editor, in dem Fall "Quill".
Ja, die Antwort war Käse. Nicht drüber nachgedacht.
Der WYSIWYG-Editor wird zwar im Frontend einiges erleichtern, nützt aber natürlich für die eigentliche Validierung und damit das Problem des Fragestellers nichts.
Nevermind.
mag sein, der editor den ich jetzt verwende gibt aber html aus und die leute die diese webseite hier erstellt haben, haben das auch irgendwie hingekriegt
Naja, das einfachste ist strip_tags und nur die erlaubten Tags angeben:
an sich fast perfekt, ich danke dir aber weiter unten auf der seite ist diese Warnung, kann ich es trotzdem verwenden?
WarnungDiese Funktion sollte nicht verwendet werden, um zu versuchen XSS-Attacken zu verhindern. Statt dessen sind geeignetere Funktionen wie htmlspecialchars() oder andere Mittel, abhängig vom Ausgabekontext, zu verwenden.
allerdings habe ich jetzt html inout der html code bleiben muss
sicher nicht.
Was genau willst du denn machen?
Alex
ich habe html input der nicht verändert werden darf weil er für textformatierung zuständig ist also enthält so sachen wie <bold>Hello</bold>
Ein fertiger Editor wie TinyMCE nützt gar nicht und entbindet einen nicht davon, die übermittelten Daten zu überprüfen und säubern.