Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 11.03.2018
Сообщений: 13

Защита от CSRF-атак

06.06.2018, 01:18. Показов 4216. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как проверить на странице-обработчике, что запрос от AJAX пришёл именно с этого же сайта и залогиненого пользователя?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.06.2018, 01:18
Ответы с готовыми решениями:

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

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

Защита от ддос атак
помогите плз. подскажите плз, как и чем максимально защититься от ддос атак? п.с. к примеру ддост одновременно 5 человек, мне надо...

31
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
06.06.2018, 20:58
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Так лучше не делать. Хакер может подставить сюда любой код, какой хочет. А валидация value на стороне сервера становится проблемой.
Эм...что?)

Вот допустим пришел мне токен из формы.
Я проверяю так:
PHP
1
2
3
if ($_SESSION['_token'] !== $_POST['_token']) {
exit('wtf?');
}
И неважно какой там код пришлет хакер. В БД я его не пишу, через eval() не выполняю)
Опасности не больше чем от любых других данных с формы.
1
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
07.06.2018, 07:29
zlojnaxa, не надо учитывать. Я знаком с безопасностью в некоей мере. В моём примере никакой уязвимости нет.
Только, само собой, напрямую к $_SESSION и $_POST обращаться не рекомендуется. Но на то и было сказано, что пример максимально упрощён, так как говорил только о самом алгоритме.
1
Эксперт JS
2037 / 1096 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
08.06.2018, 05:56
Цитата Сообщение от Para bellum Посмотреть сообщение
не надо учитывать
Подумал над словами CoderHuligan, посмотрел что написал tarasalk и вывод я для себя сделал. Согласен с вами и с tarasalk на все 100. Ведь на самом деле в html-ку до отправки на сервер можно много чего запихнуть- когда-то сам баловался так (проверяя свои скрипты), да и не секрет: пробовал так на некоторых сайтах. Где-то, на каком-то сайте, помню был <option> с селектами (что-то там подсчитывалось), у селекта был value --- дак вот подменив значение (через диспетчер кода) селекта можно было калькулятор заставить считать то чего там не предусмотренно. Никаких, абсолютно, проверок не было, ни на что. Можно было ввести вместо "10" "1 триллион" и страница наглухо висла. Нуу... это уже меня занесло не туда И это отдельная тема.
Все равно спасибо что предупредили

Добавлено через 33 минуты
В связи с вышесказанным у меня возник вопрос
Цитата Сообщение от CoderHuligan Посмотреть сообщение
А валидация value на стороне сервера становится проблемой.
Например есть форма:
HTML5
1
2
3
4
<form method="POST" action="handler.php">
    <input type="text" placeholder="Пишем вредный код" name="danger">
    <input type="submit" value="Отправить">
</form>
И есть обработчик (будем исходить из того что вредоносный код пишется на латинице+цифры+какие-то символы (опять же на латинице) ) "handler.php":
PHP
1
2
3
4
if(!preg_match("/^[а-я]+$/u",$_POST['danger'])){
    echo "С формы пришли не только русские буквы- посему не заносим в БД";
    exit; // или die
}
Вот и вопрос: в чем проблема валидации value на сервере?

Добавлено через 21 час 34 минуты
Цитата Сообщение от Para bellum Посмотреть сообщение
Только, само собой, напрямую к $_SESSION и $_POST обращаться не рекомендуется.
Вы имели ввиду что нужно проверять $_SESSION и $_POST на пустоту, на соответствие типа данных, на запрещенные символы и т.д.?
0
9 / 9 / 9
Регистрация: 05.03.2018
Сообщений: 65
09.06.2018, 10:32
Можно создать сесию для авторизованного пользователя и проверять на ее существование обработчиком, а если сесии нет то делать exit();
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
09.06.2018, 10:38
Sound84, сессия не защитит от CSRF. Скорей наоборот, сессия одна из причин этой уязвимости.
0
Эксперт JS
2037 / 1096 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
09.06.2018, 10:44
Цитата Сообщение от tarasalk Посмотреть сообщение
сессия не защитит от CSRF
Поясните?
0
9 / 9 / 9
Регистрация: 05.03.2018
Сообщений: 65
09.06.2018, 10:46
PHP
1
2
3
if ($_SESSION['_token'] !== $_POST['_token']) {
exit('wtf?');
}
Вы предлагаете такой же вариант только чуть по другому. Почему нельзя при авторизации пользователя создать сесию.

PHP
1
2
3
4
5
6
7
//если авторизован
$_SESSION['user_valid'] = true;
 
//и при каждой манипуляции с базой или обработкой данных проверять.
if ($_SESSION['user_valid'] !== true) {
 exit();
}
Все так же как вы предлагаете только без токена!
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
09.06.2018, 11:31
Мне кажется вы не знаете что такое CSRF.
Допустим клиент зашел на сайт злоумышленника, нажимает на кнопку и хоп... от его лица делается POST запрос в банк на перевод денег на счет злоумышленника. И банк это одобрит, потому что запрос пришел от авторизованного юзера.
0
Эксперт JS
2037 / 1096 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
09.06.2018, 11:37
Цитата Сообщение от tarasalk Посмотреть сообщение
Мне кажется вы не знаете что такое CSRF.
Вы это кому адресовали?
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
09.06.2018, 11:47
zlojnaxa, Sound84
0
Эксперт JS
2037 / 1096 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
09.06.2018, 12:04
Sound84, вот посмотри пример приводился.
Разница этого кода, который ты привел:
PHP
1
2
3
4
5
6
7
//если авторизован
$_SESSION['user_valid'] = true;
 
//и при каждой манипуляции с базой или обработкой данных проверять.
if ($_SESSION['user_valid'] !== true) {
 exit();
}
От того что я скинул по ссылке, заключается в том что в "ссылочном коде" ты вешаешь сессию с токеном на value формы а в обработчике проверяешь. А если ты сделаешь так как ты предлагаешь то (стащил на просторах сети):

-----------------------------------------------
«Классический» сценарий атаки таков:
• Вася является залогиненным на сайте, допустим, mail.com. У него есть сессия в куках.
• Вася попал на «злую страницу», например хакер пригласил его сделать это письмом или как-то иначе.
• На злой странице находится форма такого вида:
HTML5
1
2
3
4
<form action="http://mail.com/send" method="POST">
  <input type="hidden" name="message" value="Сообщение">
  ...
</form>
• При заходе на злую страницу JavaScript вызывает form.submit, отправляя таким образом форму на mail.com.
• Сайт mail.com проверяет куки, видит, что посетитель авторизован и обрабатывает форму. В данном примере форма предполагает посылку сообщения.

Итог атаки – Вася, зайдя на злую страницу, ненароком отправил письмо от своего имени. Содержимое письма сформировано хакером.
-----------------------------------------------
Ссылка на оригинал статьи
Советую прочитать статью до конца.
1
9 / 9 / 9
Регистрация: 05.03.2018
Сообщений: 65
10.06.2018, 09:48
zlojnaxa, Я понял что вы имели ввиду, получается токен каждый раз новый при загрузке формы. Спасибо что разжевали.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.06.2018, 09:48

Защита от DoS атак
Надеюсь пишу сюда. И так. Так как я не шарю в iptables, прошу у вас помощи. Кто может написать защиту под iptables от DoS атак типа...

Защита от Ddos атак
Здравствуйте уважаемые форумчане, может ктото может помочь с такой бедой, в общем есть проект игры Killing Floor, сайт Proton, так вот там...

Защита от ddos атак
Доброго времени суток, участники форума! Заинтересовал меня вот такой вопрос. Подскажите кто в курсе как хостинг или сторонние конторы...

Защита cookies от атак мошенников
Какие существуют атаки с использованием кукис, и как их предотвратить? Имеется в виду работа с кукис моего домена.

Срабатывает csrf защита если функция в отдельном js-файле
Всем привет, В php/codeigniter/twig/JS проекте нужно передать пару переменных csrf_token_name / csrf_token_hash для выполения...


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru