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
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