GET Felder prüfen gegen XSS (PHP)
Rekneh
- php
Hallo,
ich möchte gerne meine Suche absichern. Ich bekomme via GET oder POST den Prammeter s. Grundsätzlich ist in der Suche erstma alles zulässig.
Was den Einsatz von htmlspecialchars() in der Suche erschwert. Was nutzt Ihr alternativ zu strip_tags um die Inputfelder zu prüfen?
Danke
Tach!
Was den Einsatz von htmlspecialchars() in der Suche erschwert. Was nutzt Ihr alternativ zu strip_tags um die Inputfelder zu prüfen?
Nichts, was nicht aufgrund der Geschäftslogik geprüft werden müsste.
Dass keine Injection entsteht, ist Sache beim Ausgeben von Werten. Jedoch müssen alle Werte - ungeachtet ihrer Herkunft, also auch egal ob sie Nutzereingabe sind - kontextgerecht behandelt, wenn man sie anderenorts einfügen möchte.
htmlspecialchars() wendet man an, wenn man Werte in HTML einfügt. In Richtung Suche ergibt eine HTML-gerechte Maskierung keinen Sinn.
strip_tags() kann man nehmen, wenn man möchte, ist aber kein Sicherheitsfeature.
dedlfix.
Hello,
ich möchte gerne meine Suche absichern. Ich bekomme via GET oder POST den Prammeter s. Grundsätzlich ist in der Suche erstma alles zulässig.
Was den Einsatz von htmlspecialchars() in der Suche erschwert. Was nutzt Ihr alternativ zu strip_tags um die Inputfelder zu prüfen?
Für deine Suche nimmst Du Daten entgegen, also eine EINGABE. Solange Du die nicht im HTML-Kontext wieder ausgeben willst, hat htmlspecialchars()
dort nichts zu suchen. Das ist nämlich zur Anpassung von Zeichenketten an den HTML-Kontext bei der AUSGABE gedacht.
Ob strip_tags() von Interesse sein könnte (Konjunktiv), hängt davon ab, wo Du suchen willst. Wenn Du z. B. in einer (SQL-)Datenbank über deren Textschnittstelle suchen willst, musst Du die zugehörigen Escapefunktionen für die Datenbankschnittstelle beachten.
Außerdem gibt es für Abfragen an (SQL-)Datenbanken auch meistens Jokerzeichen, speziell bei der Verwendung von LIKE
. Die musst Du ggf. auch entfernen oder ersetzen.
Glück Auf
Tom vom Berg
hallo
Hallo,
ich möchte gerne meine Suche absichern. Ich bekomme via GET oder POST den Prammeter s. Grundsätzlich ist in der Suche erstma alles zulässig.
Was den Einsatz von htmlspecialchars() in der Suche erschwert. Was nutzt Ihr alternativ zu strip_tags um die Inputfelder zu prüfen?
Danke
Einen text nach
<script>alert('hallo')</script>
zu durchsuchen, ist kein Problem.
durchsuche ich mit index(), ist keine Massnahme notwendig.
durchsuche ich mit einer regulären Expression, ist /\Q$searchstring\E/ anzuwenden.
Unerfreuliches passiert erst, wenn du diesen Suchstring in deinem HTML unescaped einsetzt und an den Browser sendest.
ich möchte gerne meine Suche absichern.
Naja. Wie findet diese Suche denn statt?
Die Datenbankverbindungen kennen bind_params()
, prepare()
und Co.. Übergibst Du die Suchbegriffe an ein Programm in einer Subshell als Argument, dann geht etwas wie escapeshellarg()
.
Für die Wieder-Ausgabe des Suchbegriffs in der resultierenden Webseite nimmt man natürlich htmlspecialchars()
.