TheDarkestRed TheDarkestRed

Местные жители используют синие кристаллы для создания защитных полей вокруг своих домов 🎮🏠💎

...
Hisus Hisus

А ничего что количество аргументов в делегатах разное и оверрайднуть нельзя из-за этого?

TheDarkestRed TheDarkestRed

Механика парирования 🎮 🤺

...
ruggaraxe ruggaraxe

Mr_Fog, Спасибо) осенью планируем выпустить новую демку)

Mr_Fog Mr_Fog

Игра просто супер!!! Спасибо большое за столь интересный и не обычный проект.

alexrybalkin alexrybalkin

Делаем с командой игру.
В этой сцене мы впервые сталкиваемся с потусторонними силами.

TheDarkestRed TheDarkestRed

Cоздаём новое освещение и цветовой схему 🎮👩‍🎨🌓
https://the-darkest-red.xsollasitebuilder.com

TheDarkestRed TheDarkestRed

Линейка новых скриншотов The Darkest Red 🎮🤺💥🧟🔥

DuCats Games DuCats Games

Jusper, Привет!
Так она же давно в релизе уже больше года)

Jusper Jusper

DuCats Games, а что случилось с Action RPG?

Jusper Jusper

И артово и интерфейсно игруха стала выглядеть намного круче!

win20082007 win20082007

Приветствую друзья! На этой неделе учился смешивать материалы на враге для правильной работы умения невидимости.

TheDarkestRed TheDarkestRed

Бой в шкуре врага 🎮🧟🤺

TheDarkestRed TheDarkestRed

Два способа решить одну задачу 🎮🧟🔥💥
https://vk.com/the_darkestred

alexprey alexprey

О да, "Всем привет, диск сгорел, игра не выйдет" прям классика!

Пустил ностальгирующую слезу, сам через это все прошел, хоть и не выпустил ни одной игры

TheDarkestRed TheDarkestRed

Используй врага, чтобы открыть ворота 🎮 🥶 🧟

TheDarkestRed TheDarkestRed

Тренируем нового монстра 🎮🤺🧟
https://vk.com/the_darkestred

alexprey alexprey

Jusper, ну обычно целая война вокруг этого разворачивается

Логотип проекта Программирование

CSRF — обезопасить запрос с помощью токена

От распространённых уязвомостей, вроде SQL инъекций, я свой сайт более-менее защитил. Теперь вот узнал о такой уязвомости, как Сross Site Request Forgery. Рекомендуемое решение — добавление в параметр запроса некоего "токена".

Вопрос: чем является этот токен и как его использовать? Генерировать какое-то случайное значение и передавать его сначала в запрос, а потом сравнивать на сервере? Как правильно это значение генерировать? Как правильно его добавлять к запросу?

Ответ

bladget, ну так если у тебя уже используется POST запрос, то речи о CSRF и быть не может. Соль этой штуки в том, что у тебя какие то действия выполняются через обычную ссылку, например - удаление всех сообщений почты происходит по ссылке

http://some.com/mail/?do=remove&scope=all

ты берешь на другом сайте и этому юзеру вставляешь картинку

[img]http://some.com/mail?do=remove&score=all[/img]

все это рендерится вот в это

<img src="http://some.com/mail?do=remove&score=all">

браузер видит картинку, начинает её грузить по этому адресу, он отправляет запрос

GET /mail?do=remove&score=all HTTP1.0
Host: some.com
Referer: no-name.com
Cookies: {cookie for some.com}

сервер это принимает, смотрит куки, видит что юзер авторизован. И начинает выполнять свои действия, потом отправляет результат обратно

{какой то хеадер ответа}

<h2>All messages from you mailbox are removed.</h2>

в результате:
картинка не отобразилась, потому что браузер получил не картинку
у юзера удалились все его сообщения из почтого ящика, и он этого не заметил
В этом и суть CSRF

Смотрите также:


Комментарии



На твоем сайте просто ссылку на действие поставляй со случайным токеном и сохраняй его, для какого пользователя и на какое действие, а потом проверяй. После использования токен удалять и можно будет использовать снова. Таким образом злоумышленник не сможет подделать запрос. т.к. присутствует случайная величина. Кст да, после неправильного действия (если параметры токена не совпали), токен тоже надо удалять. А вообще это все конечно красиво, но гораздо проще проверять в хедере Referer. Хотя на мой взгляд лучше использовать обе техники


еще вспомнил. Можно использовать POST запросы для такого. Пост запрос так же через ссылку не подделаешь. Так 100% надежно

alexprey,

гораздо проще проверять в хедере Referer

Читал что пользователь может как-то отключить Referrer'ы, что делает невозможным проверку, поэтому должно использовать токены. Может я что-то напутал?

Можно использовать POST запросы для такого. Пост запрос так же через ссылку не подделаешь. Так 100% надежно

Честно говоря я не понял. В данный момент у меня сделано так: для каждой формы генерируется уникальная пара ключ/значение, которая передаются вместе с данными формы и сравниваются скриптом-обработчиком формы. (для GET запросов я токены не использую). Пара хранится в сессии и очищается, естественным образом, после окончания сессии. Я думал сделать так, чтобы пара генерировалась каждый запрос новая, но пока времени не было. Доделаю, когда займусь шифрованием полей формы.

bladget, ну так если у тебя уже используется POST запрос, то речи о CSRF и быть не может. Соль этой штуки в том, что у тебя какие то действия выполняются через обычную ссылку, например - удаление всех сообщений почты происходит по ссылке

http://some.com/mail/?do=remove&scope=all

ты берешь на другом сайте и этому юзеру вставляешь картинку

[img]http://some.com/mail?do=remove&score=all[/img]

все это рендерится вот в это

<img src="http://some.com/mail?do=remove&score=all">

браузер видит картинку, начинает её грузить по этому адресу, он отправляет запрос

GET /mail?do=remove&score=all HTTP1.0
Host: some.com
Referer: no-name.com
Cookies: {cookie for some.com}

сервер это принимает, смотрит куки, видит что юзер авторизован. И начинает выполнять свои действия, потом отправляет результат обратно

{какой то хеадер ответа}

<h2>All messages from you mailbox are removed.</h2>

в результате:
картинка не отобразилась, потому что браузер получил не картинку
у юзера удалились все его сообщения из почтого ящика, и он этого не заметил
В этом и суть CSRF

alexprey,

А разве пользователь не может отредактировать атрибуты input'ов в форме и отправить то же самое?
+
Хотя в таком случае какой смысл делать токен? >_<

bladget, может, но речь идет не об этом. Ты сейчас говоришь о простой валидации инпута, смотри вше что я тебе написал. Речь идет о том, что кто-то чужой, который не имеет доступа к этой ссылке подсунул тебе, а ты даже и не заметил этого. Если я тебе плохо объяснил все в прошлом посте, попробуй почитать на вики

alexprey,

Я уже много где читал, в т. ч. на Вики. Видимо где-то приянл во внимание вредный совет. Я всё понял, спасибо.

Возможность добавлять комментарии была ограничена