danilaxxl danilaxxl

CollectableItemData.cs

[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]

GoloGames GoloGames

vadya_ivan, рад, что вам игра показалась интересной : )

P.S. Кстати уже доступна бесплатная демо-версия в Steam

vadya_ivan vadya_ivan

Визуал, задумка, музыка , механики, все в цель

GoloGames GoloGames

Ato_Ome, спасибо за позитивные эмоции, будем стараться : )

Ato_Ome Ato_Ome

Потрясающий результат, все так четенько, плавненько)
То ли саунд, то ли плавность напомнили мне игрушку World of Goo, удачи вам в разработке и сил побольше дойти до релиза!)

Cute Fox Cute Fox

Graphics are a little cool, good HD content. But this game doesn't cause nary interest me.
However the game is well done.

GMSD3D GMSD3D

Почему действие после всех условий выполняется?
[step another object]

Zemlaynin Zemlaynin

Jusper, Везде, но наугад строить смысла нет. Нужно разведать сперва территорию на наличие ресурсов.

Jusper Jusper

Zemlaynin, а карьеры можно будет везде запихать?
Или под них "особые" зоны будут?

Zemlaynin Zemlaynin

Это так скажем тестовое строительство, а так да у города будет зона влияния которую нужно будет расширять.

Jusper Jusper

А ссылка есть?

Jusper Jusper

Я не оч понял из скриншота, как вообще работает стройка. У игрока будет как бы поле строительства?

split97 split97

в игру нужно добавить время песочные часы в инвентаре, пока бегаешь наберается усталость и ты очень тормозной мобильный враг просто убевает

split97 split97

в игру нужно добавить время песочные часы в инвентаре, пока бегаешь наберается усталость и ты очень тормозной мобильный враг просто убевает

ViktorJaguar ViktorJaguar

Почему я нигде не могу найти нормальный туториал, где покажут как экипировать предмет (например, меч) в определенную (выделенную под оружие) ячейку???

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

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,

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

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