Sie könnten nur array_map
strip_tags
-$_POST
, aber es ist viel schöner, eine benutzerdefinierte Funktion zu schreiben Daten von ihm zu erhalten:
function post_data($name) {
global $post_cache;
if (in_array($name, $post_cache)) {
return $post_cache[$name];
}
$val = $_POST[$name];
if (is_string($val)) {
$val = strip_tags($val);
} else if (is_array($val)) {
$val = array_map('strip_tags', $val);
}
$post_cache[$name] = $val;
return $val;
}
Dadurch wird Ihr Code besser lesbar machen (andere in sie sucht, wird im Allgemeinen davon ausgehen, Das $_POST['foo']
ist die Daten im Formularfeld foo
, nicht etwas, das Sie bereits vorverarbeitet haben), wird nicht Probleme mit Plugins oder Bibliotheken verursachen, die versuchen, $ _POST direkt zuzugreifen, macht es einfach, mehr Logik zu $_POST
Vorverarbeitung hinzufügen (Unescape, wenn magic quotes aktiviert sind, ist eine gemeinsame), ohne den ganzen Ort zu jagen s in Ihrem Code, wo Sie POST-Daten verwendet haben, und Sie vor großen Kopfschmerzen bewahrt, wenn Sie feststellen, dass es einige POST-Felder gibt, in denen Sie HTML-Tags benötigen. Im Allgemeinen ist es eine wirklich schlechte Idee, einen der Superglobals direkt zu ändern.
Außerdem ist es besser, Daten auf Ausgabe, nicht auf Eingabe zu desinfizieren. Verschiedene Anwendungen werden verschiedene Methoden erfordern, zum Beispiel, wenn Sie
<div class="user_photo">
<img src="<?php echo photo_path($user_id) ?>" alt="<?php echo $user_name ?>" />
</div>
verwenden dann $user_name
ist ein XSS-Angriff Vektor und strip_tags
hilft nicht gegen sie überhaupt; Sie würden benötigen. Wenn Benutzerdaten als URL verwendet werden, benötigen Sie eine weitere Methode, um sich gegen javascript:
URLs und so weiter zu verteidigen.
Ehrfürchtig.Genau das habe ich gesucht. –
Dies kann nicht vor XSS geschützt werden, wenn es Formularfelder mit Namen wie 'foo [bar]' oder 'foo []' gibt, die PHP automatisch in Arrays konvertiert. – Tgr
@Tgr: Ja, das wird absolut fehlschlagen, wie du gesagt hast, aber ich denke, er hat die Idee, entsprechend anzupassen, was er braucht – w00d