Обработка и защита форм (XSS и CSRF)

Пример для обработки формы и защиты от XSS (внедрение вредоносных скриптов) и CSRF (подделка запросов)


<?php
session_start();

// Генерация CSRF токена
if (empty($_SESSION['csrf_token'])) {
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Проверка CSRF токена
if (hash_equals($_SESSION['csrf_token'], $_POST['csrf_token'])) {
// Защита от XSS: обработка пользовательского ввода
$name = htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8');
echo "Привет, $name!";
} else {
echo "Ошибка CSRF валидации!";
}
}
?>

<form method="post">
Имя: <input type="text" name="name" />
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>" />
<button type="submit">Отправить</button>
</form>


  20.09.24 / 15:13 | PHP |   155 | 5   0