Категории

Примеры кода

варианты проверок для форм, включая CSRF-токены и капчу, а также другие методы защиты и валидации.

варианты проверок для форм, включая CSRF-токены и капчу, а также другие методы защиты и валидации.

1. CSRF-токен (защита от межсайтовой подделки запроса)


Как работает?

<?php
session_start();
if (empty($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
?>
<form method="POST">
    <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
    <!-- Остальные поля формы -->
</form>
<!-- проверка на сервере -->
if ($_POST['csrf_token'] !== $_SESSION['csrf_token']) {
    die("Ошибка CSRF-токена!");
}

Зачем нужно?
Защищает от атак, когда злоумышленник пытается отправить форму с другого сайта.
Обязательно использовать для важных действий (логин, платежи, изменение данных).

Капча (защита от ботов)

Как работает?

<?php
session_start();
$a = rand(1, 10);
$b = rand(1, 10);
$_SESSION['captcha_answer'] = $a + $b;
?>
<form method="POST">
    <p>Сколько будет <?= $a ?> + <?= $b ?>?</p>
    <input type="text" name="captcha" required>
</form>
<!-- проверка на сервере -->
if ($_POST['captcha'] != $_SESSION['captcha_answer']) {
    die("Неправильная капча!");
}

3. Другие полезные проверки для форм

a) Валидация email

if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
    die("Некорректный email!");
}
b) Проверка длины пароля

if (strlen($_POST['password']) < 8) {
    die("Пароль должен быть не менее 8 символов!");
}
c) Защита от XSS (очистка ввода)

$clean_input = htmlspecialchars($_POST['comment'], ENT_QUOTES, 'UTF-8');
d) Проверка загружаемых файлов

$allowed_types = ['image/jpeg', 'image/png'];
if (!in_array($_FILES['file']['type'], $allowed_types)) {
    die("Можно загружать только JPEG и PNG!");
}
e) Ограничение частоты отправки форм (защита от флуда)

if ($_SESSION['last_form_submit'] && (time() - $_SESSION['last_form_submit'] < 10)) {
    die("Слишком часто! Подождите 10 секунд.");
}
$_SESSION['last_form_submit'] = time();

Комментарии

ds 19.07.2025 22:37
sd

Оставить комментарий

← Назад к списку