Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 05.03.2016
Сообщений: 33

Php, csrf

11.04.2017, 12:42. Показов 812. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
такой вопрос..
нужно поставить csrf token-ы на все ,скажем так, страницы сайта.
но проблема в том, что я не могу сделать токен и его проверку на одной странице.
Может у кого то есть четкий, проверенный CSRF и понятный шаблон?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.04.2017, 12:42
Ответы с готовыми решениями:

CSRF атака
Здравствуйте. Хотел бы узнать, есть ли такая программа чтоб проверить сайт на CSRF атаку?

CSRF защита
Доброе время суток Использую банальную защиту, создал токе записал в сессию, при загрузке страницы вывел в форму. Но есть проблемка,...

Защита от CSRF-атак
Как проверить на странице-обработчике, что запрос от AJAX пришёл именно с этого же сайта и залогиненого пользователя?

9
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
11.04.2017, 15:13
Во-первых, не нужно делать проверку на любой запрос. Проверяйте только те запросы, которые меняют состояние приложения (POST-запросы, в большинстве случаев).
Создайте два файла:
index.php
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
<?php
 
session_start();
 
if (!isset($_SESSION['_token'])) {
    $_SESSION['_token'] = rand();
}
?>
<form method="post" action="prepare.php">
    <input type="hidden" name="_token" value="<?=$_SESSION['_token']?>">
    <input type="submit" value="Отправить">
</form>
prepare.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
 
session_start();
 
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    
    if ($_POST['_token'] == $_SESSION['_token']) {
        echo 'Token valid';
    } else {
        echo 'Token invalid';
    }
}
Положите их рядом и проверяйте работу.
1
0 / 0 / 0
Регистрация: 05.03.2016
Сообщений: 33
12.04.2017, 09:16  [ТС]
Para bellum, а можно по подробней, что делать со вторым файлом? как проверять...просто путаюсь в этом немного.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
12.04.2017, 09:28
Положите оба файла рядом, на сервере. Затем зайдите по адресу http://сайт/index.php и нажмите "Отправить". После этого произойдёт отправка на адрес http://сайт/prepare.php
Там значение из поля сверится со значением из сессии.

Вот и весь механизм.
1
0 / 0 / 0
Регистрация: 05.03.2016
Сообщений: 33
12.04.2017, 09:54  [ТС]
Para bellum, а если мне нужно чтоб он проверил токен,и ,если верно опять вернулся на index.php и продолжил работу?
То есть, в одном и том же файле нельзя сделать проверку?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
12.04.2017, 10:10
Цитата Сообщение от Soyder Посмотреть сообщение
в одном и том же файле нельзя сделать проверку?
Можно. Проверяйте в том же скрипте, на который отправляете форму. Если отправляете на index.php -- проверяйте в нём. Нет проблем.
0
0 / 0 / 0
Регистрация: 05.03.2016
Сообщений: 33
12.04.2017, 10:40  [ТС]
Para bellum, я сделал как вы написали. Но у меня почему то токен всегда равен 1781. Что-то не так

Добавлено через 17 минут
Все,я понял почему так. Там isset поэтому он не обновляется.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
12.04.2017, 11:30
Цитата Сообщение от Soyder Посмотреть сообщение
Но у меня почему то токен всегда равен 1781
Всё правильно. Это токен достаточно на всё время сессии задать. Если очень нужно, чтобы токен был "жив" не более 5 минут -- скажем -- записывайте время и обновляйте токен, когда оно истекло.
0
0 / 0 / 0
Регистрация: 05.03.2016
Сообщений: 33
12.04.2017, 11:53  [ТС]
Para bellum, то есть при обновлении стр или повторном нажатии кнопки "отправить" он должен оставаться таким же постоянно?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
12.04.2017, 12:06
Не постоянно -- только в течение сессии. Но, повторяю:
Цитата Сообщение от Para bellum Посмотреть сообщение
Если очень нужно, чтобы токен был "жив" не более 5 минут -- скажем -- записывайте время и обновляйте токен, когда оно истекло.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.04.2017, 12:06
Помогаю со студенческими работами здесь

Безопасность. Пользовательские сессии. CSRF
сессия: идентификатор+кей(1. нужно ли при генерации каждой страницы генерировать новый кей) Реализация защиты токеном: по материалам...

Защита от CSRF - где хранить хеши?
Хочу реализовать такую защиту. Прочитал литературу, но не много не понял: В ВК, если я хочу добавить друга, или удалить генерируется хеш, а...

CSRF токен для метода POST
Здравствуйте! Очень часто вижу рекомендации для установки CSRF токена в формы которые отправляются методом POST. Но смысл не понимаю. Для...

Csrf-token и авторизация
Всем привет. Пытаюсь зайти на редит авторизованным но имею проблему с csrf-token'ом . Вот собственно код: Обрабатываем страницу...

Непонятная ошибка csrf валидации
при отправки форм в backend возникает ошибка &quot;Bad Request (#400) Не удалось проверить переданные данные&quot; формируются разные csrf...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru