PHP wie xss etc. bei html input verhindern?

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".

Woher ich das weiß:Berufserfahrung – Inhaber einer App-Agentur & 15+ Jahre Programmiererfahrung

Babelfish  13.08.2022, 17:39

Ein fertiger Editor wie TinyMCE nützt gar nicht und entbindet einen nicht davon, die übermittelten Daten zu überprüfen und säubern.

Functional  13.08.2022, 18:42
@Babelfish

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.

Mensch4 
Beitragsersteller
 13.08.2022, 17:42

Quill gibt html zurück

Mensch4 
Beitragsersteller
 13.08.2022, 17:39

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:

https://www.php.net/manual/de/function.strip-tags.php

Woher ich das weiß:Berufserfahrung – Entwickle seit > 20 Jahren Anwendungen mit PHP.

Mensch4 
Beitragsersteller
 13.08.2022, 17:44

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.
Babelfish  13.08.2022, 17:53
@Mensch4

Du musst ja aber HTML durchlassen, also geht htmlspecialchars() nicht, auch wenn das gegen XSS da sicherste ist. Deshalb ist strip_tags() schon mal der richtige Ansatz. Zusätzlich kannst du aber noch weitere Sachen einbauen.

allerdings habe ich jetzt html inout der html code bleiben muss

sicher nicht.

Was genau willst du denn machen?

Alex


Mensch4 
Beitragsersteller
 13.08.2022, 17:30

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>