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

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

  1. <?php
  2.  
  3. // Генерация CSRF токена
  4. if (empty($_SESSION['csrf_token'])) {
  5. $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
  6. }
  7.  
  8. if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  9. // Проверка CSRF токена
  10. if (hash_equals($_SESSION['csrf_token'], $_POST['csrf_token'])) {
  11. // Защита от XSS: обработка пользовательского ввода
  12. $name = htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8');
  13. echo "Привет, $name!";
  14. } else {
  15. echo "Ошибка CSRF валидации!";
  16. }
  17. }
  18. ?>
  19.  
  20. <form method="post">
  21. Имя: <input type="text" name="name" />
  22. <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>" />
  23. <button type="submit">Отправить</button>
  24. </form>


  20.09.24 / 18:13 | PHP |   29 | 3   0