Das ist ziemlich einfach (für mich zumindest), da es eine sehr allgemeine Antwort gibt :)
NEIN
Es gibt keine Möglichkeit, die Benutzereingaben wirklich sicher zu "reparieren".
"Bitte geben Sie eine Liste mit allem, was Sie nicht mit einem Hammer tun sollten"
ist viel schwieriger als
msgstr "alle geeigneten Verwendungen eines Hammers auflisten".
Sie könnten einen oder zwei vergessen, aber es ist kein Schaden, wenn Sie zurückgehen und sie hinzufügen.
Es hört sich vielleicht hart an, aber etwas wird dich immer in Ruhe lassen, und wenn es nur EVAL(UNHEX(ASD23426363))
oder so ähnlich ist. (Sql Beispiel, obwohl Sie es gesagt haben, nicht SQL, aber was auch immer).
Natürlich möchten Sie vielleicht sowieso Dinge aus der Eingabe für den HTML-Kontext entfernen, so dass eine Lücke in Ihrem anderen Code nicht so leicht ausgenutzt wird und weniger Schaden entsteht.
Jemand, der gesagt hat Filter Input, Escape Output
, besser als ich könnte. Terry Chay
Kurz gesagt: Was auch immer Sie dort tun, finden Sie die entsprechende Escape-Funktion und verwenden Sie sie.
Shell-Kontext escapeshellarg
HTML-Kontext? htmlspecialchars
Datenbankkontext? Verwenden Sie vorbereitete Anweisungen und sorgen Sie sich nie wieder um die SQL-Injektion
Little edit: Ich weiß was ich gesagt habe und der Blogpost widerspricht ein wenig, aber das ist gut für mich. 'In der Praxis' wird immer von allgemeinen Ratschlägen abweichen und manchmal möchten Sie alles tun, was Sie können;)