HellWalk
Новичок
Для самописного фреймворка продумываю защиту от csrf-атак.
Подскажите, правильно ли она сделана в этом примере:
Результат:
Подскажите, правильно ли она сделана в этом примере:
PHP:
<?php
function getRandomString($length = 15) {
$chars = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
$numChars = strlen($chars);
$string = '';
for ($i = 0; $i < $length; $i++) {
$string .= substr($chars, rand(1, $numChars) - 1, 1);
}
return $string;
}
session_start();
if ($_POST) {
echo '<pre>';
print_r($_POST);
echo '</pre>';
if ($_POST['csrf'] === $_SESSION['csrf']) {
echo '<p>Токены идентичны. Ваши данные приняты.</p>';
} else {
echo '<p>Токены не совпадают. Ваши данные отклонены.</p>';
}
} else {
$_SESSION['csrf'] = getRandomString();
}
?>
<form method="POST" action="">
<input type="hidden" name="csrf" value="<?= $_SESSION['csrf'] ?>">
<input type='text' maxlength='15' value='' name='Name' />
<input type="submit">
</form>
