Raketenwilli: Spambots, CSRF token

Beitrag lesen

Und die Emails, die mich erreichen, haben die Meldung:

Spambot - Kein valides Subject

Ok. Untersuchung:

Um zu dieser Ausgabe vorzudringen muss der kleine Mann namens PHP (Peter Hat Programm) folgende Daten vorfinden:

if($_POST['formsend']) {
  • $_POST['formsend'] ist truly (nicht: false, null, 0 oder '')
if(is_null($name) || $name == '') {
  • UND NICHT $name ist null oder leer.
} elseif(
       is_null($email) 
    || filter_var( $email,FILTER_VALIDATE_EMAIL) == false
) {
  • UND $email ist nicht null
  • UND filter_var( $email,FILTER_VALIDATE_EMAIL) ist nicht falsy
} elseif($_SESSION['token'] != $_POST['token']) {
  • UND $_SESSION['token'] und $_POST['token'] stimmen grob (nicht typsicher) überein - was aber auch zutrifft, wenn diese jeweils entweder leer, 0 oder false sind…
} elseif($nur_ziffern_ausgefuellt) {
  • UND $nur_ziffern_ausgefuellt ist truely. Was aber z.B. auch zutrifft, wenn es „0“ (Den String „0"!) enthält.

Und jetzt geh debuggen: Lass Dir ausgeben, was drin steht. Vergleiche das mit Deinen Erwartungen.


Begriffe:

  • truely: Ein nicht typsicherer Vergleich mit true matcht: if ( $foo )
  • falsy : Ein nicht typsicherer Vergleich mit false matcht. if ( ! $foo )