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
Mensch4 
Fragesteller
 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

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

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

1
Mensch4 
Fragesteller
 13.08.2022, 17:42

Quill gibt html zurück

0

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 
Fragesteller
 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.
0
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.

0
allerdings habe ich jetzt html inout der html code bleiben muss

sicher nicht.

Was genau willst du denn machen?

Alex

Mensch4 
Fragesteller
 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>

0