CSRF önlemek için bir kerelik belirteci, POST'ed ve geçerli oturum ile ilişkili doğrulamak isteyeceksiniz. Aşağıdaki gibi bir şey. . .
Kullanıcı istekleri bir kaydı silmek için sayfada:
confirm.php
<?php
session_start();
$token= md5(uniqid());
$_SESSION['delete_customer_token']= $token;
session_write_close();
?>
<html>
<body>
<form method="post" action="confirm_save.php">
<input type="hidden" name="token" value="<?php echo $token; ?>" />
Do you really want to delete?
<input type="submit" value=" Yes " />
<input type="button" value=" No " onclick="history.go(-1);" />
</form>
</body>
</html>
>
Sonra aslında kayıt silme söz konusu olduğunda:
confirm_save.php
<?php
session_start();
$token = $_SESSION['delete_customer_token'];
unset($_SESSION['delete_customer_token']);
session_write_close();
if ($token && $_POST['token']==$token) {
// delete the record
} else {
// log potential CSRF attack.
}
?>
Belirteç, tahmin etmek zor, her silme istek için benzersiz, $ _POST sadece aracılığıyla kabul olması ve bir kaç dakika (son bu örnekte gösterilmemiştir) sonra sona gerekir.