PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Der vB Input Cleaner (Formulardaten validieren)



Surviver
12.08.2007, 12:59
Was ist das

Dies ist ein Tutorial, welches erklärt, wie man Formulareingeben "bereinigen" kann, damit keine Sicherheitslücken entstehen (wie zb die Nutzung von html).

Wie geht das ?

Dies geht mit einer eigentlich sehr einfachen Funktion, nämlich $vbulletin->input->clean_array_gpc.

Die Funktion sieht folgendermassen aus:
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------

Wie benutze ich das ?

Die Funktion nimmt 2 "Werte" auf. Einmal die Art der Formulardaten
(
CODE:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------
)

Und als 2tes die Namen der Felder, die ausgewertet werden sollen.

bei $source kann man folgende Werte angeben:

CODE:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------

Dabei lässt sich immer nur ein Buchstabe angeben.

Bei $variables kann man folgende Werte nutzen:

CODE:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------

Beispiele

Ich denke man kann es am besten anhand von einigen Beispielen verdeutlichen. Hierbei bediene ich mich an einem Beispiel der offiziellen vBulletin Dokumentation:
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------

Dieser Code liest die Variablen field_one, field_two und key_field aus der Superglobalen Variable $_POST ein. Dabei ist field_one ein String, field_two darf kein HTML enthalten und key_field ist ein Zahlenwert.

Jetzt habe ich zwar validierte Daten, aber wie kann ich diese jetzt in meinem Script nutzen ?

Die Daten lassen sich jetzt mit $vbulletin->GPC['feldname'] ausgeben. In diesem Beispiel würde das dann folgendermaßen aussehen:

$vbulletin->GPC['field_one']
$vbulletin->GPC['field_two']
$vbulletin->GPC['key_field']

Dies kann man dann in den Scripten nutzen.

Und warum sollte ich mir die Sache damit verkomplizieren ?

Dafür gibt es 2 Gründe:

Es ist wesentlich sicherer so, als den Code direckt in der Datenbank oder sonst wo zu speichern/zu verwenden
ist es vBulletin Standard und sollte bei allen Hacks eingehalten werden