fastix®: Formular-Eingabehilfen unterdrücken

Beitrag lesen

Moin!

Der Browsersicherste Weg ist es, die Felder jedesmal neu zu benennen und in einem versteckten Formularfeld deren Namen zu übergeben. Das kann dann ja serverseitig ausgewertet werden.

Formular:
<?php
$strGeheim='F'.md5('SALT'.$_SERVER['UNIQUE_ID']);
?>
<input type="hidden" name="ffeldname" value="<?php echo $strGeheim; ?>">
<input type="text" name="<?php echo $strGeheim; ?>" value="">

$strGeheim='F'.md5('SALT'.$_SERVER['UNIQUE_ID']);

Ganz einfach:

$_SERVER['UNIQUE_ID'] - liefert eine "einzigartige" id für den Zugriff. Falls auf dem Server nicht implementiert, eine große Zufallszahl verwenden...

'SALT'.$_SERVER['UNIQUE_ID'] - 'SALT' ist hier Platzhalter für einen beliebigen String, den der Programmierer 'geheim' hält um es einem Angreifer zu erschweren $_SERVER['UNIQUE_ID'] oder die Zufallszahl, respektive das Ergebnis von md5() zu erraten.

md5('SALT'.$_SERVER['UNIQUE_ID']) - verschlüsselt das ganze nach dem MD5- Verfahren. "Einwegverschlüsselung", lässt sich "nicht" enschlüsseln. (Das Verfahren ist kompromittiert, aber nicht geknackt)

'F'.md5('SALT'.$_SERVER['UNIQUE_ID']); ?> - Wir schreiben einen beliebigen Buchstaben davor, weil Namen von Formularfeldern mit einem Buchstaben beginnen müssen, MD5 aber eine Ziffer liefern kann.

<input type="hidden" name="ffeldname" value="F75b8cbbb833c0aab1151cba662246e24">
<input type="hidden" name="F75b8cbbb833c0aab1151cba662246e24" value="">

  • könnte in etwa das Ergebnis sein.

Auswertung (auch in PHP)

<?php

function MyError() {
  die('FEHLER');
}

if (isset ($_POST['ffeldname'])) {
   $strFeldname=$_POST['ffeldname'];
   if isset($_POST['$strFeldname'])) {
      $strFeldinhalt=$_POST['$strFeldname'];
   } else {
     MyError();
   }
} else {
     MyError();
}

MFFG (Mit freundlich- friedfertigem Grinsen)

fastix®

--
Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development