Heim  >  Artikel  >  Backend-Entwicklung  >  So verhindern Sie Remote-Commit in PHP

So verhindern Sie Remote-Commit in PHP

王林
王林Original
2019-09-21 17:56:182796Durchsuche

So verhindern Sie Remote-Commit in PHP

Im Allgemeinen ist das Verhindern der Formularübermittlung außerhalb der Website nichts anderes als das Hinzufügen eines Tokens zur Überprüfung jedes Mal, wenn das Formular geöffnet oder Daten übermittelt werden. Dies unterscheidet sich eigentlich nicht von der Bestätigungscode-Methode. Schauen wir uns einige Beispiele an, um die Remote-Übermittlung von Formularen außerhalb der Website zu verhindern.

Beispiel 1: Jedes Mal, wenn wir die Übermittlungsseite öffnen, generieren wir ein Token und speichern es dann in der Sitzung. Wenn das Formular übermittelt wird, ermitteln wir, ob das aktuelle Der Tokenwert stimmt mit der Sitzung überein. Konsistent, wenn ja, handelt es sich um eine normale Übermittlung, andernfalls handelt es sich um eine ungültige Übermittlung.

Der spezifische Code lautet wie folgt:

<?php     
session_start();     
     
if ($_POST[&#39;submit&#39;] == "go"){     
    //check token     
    if ($_POST[&#39;token&#39;] == $_SESSION[&#39;token&#39;]){     
        //strip_tags     
        $name = strip_tags($_POST[&#39;name&#39;]);     
        $name = substr($name,0,40);     
        //clean out any potential hexadecimal characters     
        $name = cleanHex($name);     
        //continue processing....     
    }else{     
        //stop all processing! remote form posting attempt!     
    }     
}     
     
$token = md5(uniqid(rand(), true));     
$_SESSION[&#39;token&#39;]= $token;     
     
 function cleanHex($input){     
    $clean = preg_replace("![\][xX]([A-Fa-f0-9]{1,3})!", "",$input);     
    return $clean;     
}     
?>     
<form action="<?php echo $_SERVER[&#39;PHP_SELF&#39;];?>" method="post">     
<p><label for="name">Name</label>     
<input type="text" name="name" id="name" size="20" maxlength="40"/></p>     
<input type="hidden" name="token" value="<?php echo $token;?>"/>     
<p><input type="submit" name="submit" value="go"/></p>     
</form>

Es gibt auch eine offensichtlichere Methode, nämlich die Verwendung des Bestätigungscodes. Diese Methode des Bestätigungscodes ist die gleiche wie andere Methoden. Schauen Sie sich unten an. Einfaches Beispiel

Beispiel 2: Bestätigungscode hinzufügen

Fügen Sie beim Absenden des Formulars einen Bestätigungscode hinzu, der effektiv verhindern kann, dass die Wasserfüllmaschine Daten übermittelt. Da Grafik- und Bilderkennungsprogramme jedoch immer leistungsfähiger werden, wird die Erkennung von Verifizierungscodes immer schwieriger. Einige kleine Websites können diese Methode verwenden.

if($_POST[&#39;vcode&#39;] != get_vcode())
{
    exit(&#39;验证码校验失败,无法入库&#39;);
}

Der obige Inhalt dient nur als Referenz!

Empfohlenes Tutorial: PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo verhindern Sie Remote-Commit in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn