Bunun gibi iki gizli alanları ekleyin:
<?php
$time = time();
$_SESSION['time'] = $time;
/*
*This is a Perfect Password from Steve Gibbson's site https://www.grc.com/passwords.htm
*It should make for a great Salt.
*/
$salt = 'b79jsMaEzXMvCO2iWtzU2gT7rBoRmQzlvj5yNVgP4aGOrZ524pT5KoTDJ7vNiIN';
$token = sha1($salt . $time);
?>
<input type="hidden" name="token" value="<?php echo $token; ?>" />
Eğer kimlik doğrulaması yapmak o zaman bu gibi bir kod kullanacağız:
<?php
$salt = 'b79jsMaEzXMvCO2iWtzU2gT7rBoRmQzlvj5yNVgP4aGOrZ524pT5KoTDJ7vNiIN';
$token = sha1($salt . $_SESSION['time']);
if($token != $_POST['token'])
{
die('you stupid scum sucking bandwidth hog!');
}
//Rest of form validation
?>
Bu mükemmel bir sistem değildir ve 2 şeylerden biri çatlamak gerekli olacağını ancak, kırık olabilir:
- Your salt (be sure you keep it
secure)
- ALOT of time, this could take several thousands of years to brute
force so don't worry about this.
EDIT: Ben yapılan bariz hata için hesap azından oturumda zaman değişken değilse, hem zaman ve karma geçmek benim cevap güncellendi. Birisi zaten berbat durumda, sunucuya erişimi olan sürece kullanarak sunucu tarafı oturumları değil, çerez seans sonra tahrif edilemez varsayarsak.