Ich habe viele andere Fragen darüber gelesen, wie man eine Zeichenkette zu "Alpha-numerisch" filtert, aber alle schlagen die Methode preg_replace()
vor.Sicherer Weg, alphanumerische Zeichenfolge von Benutzereingabe zu erhalten? (ohne preg_replace)
Nach OWASP:
Funktion preg_replace() sollte nicht mit Eingang unsanitised Benutzer verwendet werden, da die Nutzlast eval sein wird()‘ED13.
preg_replace ("/.*/ e", "System ('echo/etc/passwd')");
Reflexion könnte auch Codeinjektionsfehler haben. Sehen Sie sich die entsprechende Dokumentation an, da es sich um ein erweitertes Thema handelt.
Also wie erreiche ich das ohne preg_replace?
$result = preg_replace("/[^a-zA-Z0-9]+/", "", $_POST['data']);
// Notice the $_POST['data']
Wenn die Daten nicht gültig ist, dann, warum es sich plagen Filterung? Einfach ablehnen: '$ result = ctype_alnum ($ _ POST ['data'])? $ _POST ['data']: null; ' –
' filter_input() 'oder' filter_var() ' – cmorrissey
@cmorrissey probierte filter_ function, ich habe es mit vielen flags/filters versucht, aber die Ausgabe war nie die gleiche wie oben. z. B .: 'filter_var ($ string, FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_HIGH)' – Vladimir