php пример защиты от CSRF function genKey length 10 chars abdefhiknrst

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
//пример защиты от CSRF
function genKey($length = 10) {
$chars = 'abdefhiknrstyzABDEFGHKNQRSTYZ23456789';
$numChars = strlen($chars);
$string = '';
for ($i = 0; $i < $length; $i++) {
$string .= substr($chars, rand(1, $numChars) - 1, 1);
}
return $string;
}
//форма...
$token = genKey();
$_SESSION['token'] = md5($token);
echo '<input type="hidden" token="' . $token . '">'; //дополнительное скрытое поле в форме
if($_SERVER['REQUEST_METHOD'] == 'POST') {
//тут проверка данных, которые пришли постом из формы...
if(md5($_POST['token']) != $_SESSION['token']) //сверяем не пришёл ли запрос с левого сайта...
die( 'хакер, токен не верный... за вами уже выехали' );
}