2009-08-11 4 views
1

Die CodeIgniter-Formularvalidierungsbibliothek bietet die Option, Daten aus einem Formular, das validiert wird, "vorzubereiten". Das Folgende ist ein Ausschnitt aus der Dokumentation:Wie funktioniert die Formularüberprüfungsbibliothek von CodeIgniter bei der XSS-Filterung?

$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]|xss_clean');

Die xss_clean Parameter am Ende angeblich übergeben die Post-Daten durch die Funktion xss_clean.

Ich frage mich, wie verwende ich die $_POST Daten username? Hat die xss_clean Funktion direkt auf die $_POST Variable reagiert, damit ich dann folgendes machen kann: $username = $this->input->post('username');, und bekomme eigentlich die gefilterten Daten? Was passiert, wenn ich diese letzte Aussage vor die Validierungslinie setze? Wird in diesem Fall $username ungefilterte Daten enthalten? Danke im Voraus!

Antwort

0

vom user guide

„Wenn etwas nicht erlaubt angetroffen wird, wird es sicher gemacht, indem die Daten in Zeichenentitäten Umwandlung“

so ja, nach $ this- läuft> Input-> post (‚username‘) Durch die Formularvalidierung mit der Option xss werden alle schmutzigen Daten sauber angezeigt.

und ja, wenn Sie diese Aussage vor der Validierungslinie platzieren, wird sie nicht gereinigt.

Beachten Sie, dass Sie xss global für alle übermittelten Daten ausführen können, sodass Sie sie nicht in Ihre Validierungsregeln aufnehmen müssen.

+0

ja, nach dem Ausführen von $ this-> input-> post ('Benutzername') durch die Formularüberprüfung mit der Option XSS-Option alle schmutzigen Daten werden sauber herauskommen. Sie müssen ein zweites Argument auf TRUE setzen –

0

Ich würde sehr empfehlen, durch System/Bibliotheken/Input.php durchzusehen Sie können genau sehen, wie die Arbeit dort getan wird.

Ich empfehle immer das globale xss_clean einzuschalten. Es gibt nur sehr geringe Auswirkungen auf die Leistung, es sei denn, Sie sind nicht Überprüfung auf einige Felder in xss, absichtlich.

2

Die Validierung macht xss sauber, aber es hat nichts mit $this->input->post('username') zu tun. Diese Zeile wird automatisch sauber, völlig unabhängig von Ihrer Validierung (vorausgesetzt, Sie haben globale XSS-Filterung aktiviert). In der Tat bin ich bereit zu wetten, dass beide tatsächlich xss sauber es zweimal, weil ich ziemlich sicher bin, dass Validierung nur eine Kopie des Arrays erstellt .. es ändert nicht wirklich $ _POST.

Aber wie gesagt, wenn Sie von $this->input->post('username') darauf zugreifen, wird es unabhängig gereinigt werden.

+1

Sie erwähnten '$ this-> Eingangs-> post ('Benutzername') wird Xss automatisch reinigen '. Reinigen Sie es nicht nur, wenn Sie TRUE als zweiten Parameter übergeben? Das Benutzerhandbuch sagt, 'XSS-Filter ist aktiviert, indem Sie den zweiten Parameter auf TRUE setzen '(http://codeignit.com/user_guide/libraries/input.html) – Obay

+0

Ja, Sie müssen als zweiten Parameter TRUE schreiben. –

Verwandte Themen