Door
Sure Is
op 20-06-2011 13:26
gewijzigd op 20-06-2011 13:27
5.227 views
Hallo iedereen!
Ik gebruik in mijn script vaak $_POST['...'] om dingen van form in de database op te slaan.
Nu besef ik net dat, als iemand een eigen php-script maakt met daarop een form, hij de gegevens kan manipuleren.
Maar wat is je probleem? Je controleert je input toch nadat een formulier gepost is, dus uiteindelijk maakt het niet uit of ze van een andere site komen.
Hoe bedoel je, je controleert je input toch nadat een formulier gepost is?
Wat bedoel je met controleren? Kan je een voorbeeld geven?
Je kunt sowieso controleren op refererer. Als die niet leeg is en ongelijk aan jouw website, dan kunnen ze wel posten maar dan doe je niks met het resultaat.
Verder zou je een code kunnen inbouwen, bijv. een random nummer, die je in je sessie opslaat. Die code stuur je mee in het formulier en daar controleer je dan telkens op. Iemand die van buitenaf jouw formulier aanroept weet op voorhand niet wat de code is dus dat maakt het al moeilijker. Die code kun je dan ook nog laten wisselen zodra je de pagina ververst.
Ik zie het punt niet. Wat maakt het uit of mensen van mijn site een post maken bij jou? Als je dit zou blokkeren, zijn er echt nog andere mogelijkheden, zoals de referer wijzigen, of via bv. firefox addons toch de hidden-fields schrijfbaar te maken. Er zijn ontelbaar mogelijkheden om toch met je gegevens te knoeien en daarom is het dus altijd zaak om alle variabelen die van buitenaf komen te controleren.
Met controleren bedoelen we toetsen op juistheid. Zo verwacht je bij een naam veld, meer dan 0 karakters. De captcha verwacht je dat deze is ingevuld en dat deze dezelfde waarde heeft als de originele captcha.
Bij gevoelige data kun je idd beter sessions gebruiken, want dan houd je de data op je server, maar identificeer je deze wel met een gebruiker.
Captcha voorbeeld:
<?php
if (!isset($_SESSION['encrypted_captcha']) || !isset($_POST['captcha']) || md5($_POST['captcha']) !== $_SESSION['encrypted_captcha'])
{
// error, captcha is niet correct of aangemaakt.
}
?>
Niet alle browsers sturen een referer mee, en zo zou je mogelijk gebruikers kunnen uitsluiten.
Lees mijn eerste post:
"Je kunt sowieso controleren op refererer. Als die niet leeg is en ongelijk aan jouw website, dan kunnen ze wel posten maar dan doe je niks met het resultaat."
"Je kunt sowieso controleren op refererer. Als die niet leeg is en ongelijk aan jouw website, dan kunnen ze wel posten maar dan doe je niks met het resultaat."