[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Пароль администратора
Страницы: 1, 2, 3
killer8080
Цитата (killer8080 @ 13.06.2013 - 12:42)
Цитата (zvezda_t @ 13.06.2013 - 11:15)А можно вместо id_user использовать ip - пользователя?  :rolleyes:не стоит, ip адрес может изменится, например при потере связи, это создаст лишние не удобства.

Пургу сморозил, и никто меня не поправил user posted image
можно и ip использовать, и юзер агент и т.п. Но смысла в этом нет, т.к. эти данные известны атакующему.
Цитата (zvezda_t @ 13.06.2013 - 12:54)
а почему тогда называется одноразовый токен?

значит кто то делает его одноразовым smile.gif
смысл в том, что он должен быть уникальным для каждого юзера, и не предсказуем, даже если алгоритм его формирования будет раскрыт. Создавать его динамически, для каждого запроса можно, но с умом, а это лишнее усложнение и нагромождение. Ну например открыл юзер несколько вкладок в браузере, и в каждой из них сгенерился новый токен, соответственно валидным он будет только в последней, в предыдущих вкладках будут устаревшие значения, и запросы от них не пройдут, кому это надо? Можно привязать токен к uri страницы, но тогда будут проблемы например с отправкой пост запросов аяксом, на одной странице может ведь быть несколько форм, отправляемых асинхронно. Так что тут много подводных камней. Более менее оптимальным было бы создавать пару: id формы - токен, минус такого подхода - сессия засоряется кучей лишних элементов smile.gif
Цитата (zvezda_t @ 13.06.2013 - 12:57)
и ты пропустил вопрос... ответь пожалуйста:Скажи, пожалуйста, а для авторизации пользователя в системе - тоже нужно использовать токен?

не имеет смысла, брутфорс и CSRF это совершенно разные вещи.
Цитата (dron4ik @ 13.06.2013 - 13:36)
Кстати, уж тему то подняли, и сам спрошу)Я на предпоследнем проекте (самопал) использовал такой подход к формам, есть страница формыform.phpи есть обработчик той самой формыobr_to_form.phpТа странице form.php я создаю сессию с динамическим указателем, также скрытое поле с тем же указателем только в обертке хеша (который в свою очередь тоже кахеширован), а на странице обработчика сверяю...if(md5($SESSION['clovo']) != $POST['hiddenfield']) exit;Такой подход вообще от чего нибудь защитит?)

ну так это и есть защита от CSRF.
zvezda_t
Цитата
можно и ip использовать, и юзер агент и т.п. Но смысла в этом нет, т.к. эти данные известны атакующему.

нет зачем, не просто один ip, а как у тебя ip+microtime. Или это не то? smile.gif

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

да, об этом я не подумала. значит очищать после создания не нужно...
хм тогда он создается на сессию получается. так? smile.gif

_____________

Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)
killer8080
Цитата (zvezda_t @ 13.06.2013 - 14:49)
можно и ip использовать, и юзер агент и т.п. Но смысла в этом нет, т.к. эти данные известны атакующему.нет зачем, не просто один ip, а как у тебя ip+microtime. Или это не то?

для генерации токена нужно использовать данные, которые знает только сервер, ip адрес таковым не является.
Цитата (zvezda_t @ 13.06.2013 - 14:49)
да, об этом я не подумала. значит очищать после создания не нужно...хм тогда он создается на сессию получается. так?

да
zvezda_t
killer8080 поняла)
Спасибо тебе большое))))) Разобралась
user posted image user posted image

_____________

Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)
dron4ik
Цитата (killer8080 @ 13.06.2013 - 11:33)
Цитата (dron4ik @ 13.06.2013 - 13:36)
Кстати, уж тему то подняли, и сам спрошу)Я на предпоследнем проекте (самопал) использовал такой подход к формам, есть страница формыform.phpи есть обработчик той самой формыobr_to_form.phpТа странице form.php я создаю сессию с динамическим указателем, также скрытое поле с тем же указателем только в обертке хеша (который в свою очередь тоже кахеширован), а на странице обработчика сверяю...if(md5($SESSION['clovo']) != $POST['hiddenfield']) exit;Такой подход вообще от чего нибудь защитит?)

ну так это и есть защита от CSRF.

Этого достаточно?

_____________
Ex3m.com.ua — Активный образ жизни
killer8080
Цитата (dron4ik @ 13.06.2013 - 15:55)
Этого достаточно?

от межсайтовых запросов - да
zvezda_t
killer8080
я тут подумала, если в течении сессии токен не изменяется - то это значение же можно прочитать из формы и добавить себе, те злоумышленнику - разве не так?
Токен может защищать только если он одноразовый - разве не так? Один токен - одна форма.

_____________

Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)
glock18
Цитата (zvezda_t @ 14.06.2013 - 05:22)
killer8080
я тут подумала, если в течении сессии токен не изменяется - то это значение же можно прочитать из формы и добавить себе, те злоумышленнику - разве не так?
Токен может защищать только если он одноразовый - разве не так? Один токен - одна форма.

От CSRF этот токен защищает. Суть защиты от CSRF в том, что если злоумышленник откроет у себя (вручную или запросом с сервера) форму, то токен там будет сформирован для его сессии, пользователь при сабмите подставной формы будет работать уже с другой сессией, и токен соответственно будет другой, и поэтому подстановка исключена, если генерация токена опирается на какие-то данные о пользователе, которые не известны общественности
zvezda_t
glock18, опять запуталась...
Смотри, я так поняла, что опасность в том, что если хороший пользователь авторизовался под своим логином и отправляет формочки - на которых например есть спрятанный hidden токен:

<input type="hidden" name="csrf_token" value="<?=$_SESSION['csrf_token']?>" />


все ок.

Вдруг какой-то злоумышленник предлагает нашему хорошему пользователю перейти на свой сайт, а на его сайте есть точно такая же форма - которая отправляется втихоря, так как наш хороший пользователь авторизован, то злоумышленник может этим воспользоваться, если он пока сессия висит - как то прочтет с его формы значение csrf_token = то сможет сделать запрос. или это значение поля hidden не возможно прочитать?

_____________

Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)
glock18
Ну, я ведь выше объяснил. Как этот "доброжелатель" сумеет данные из чужой сессии прочесть?

PS: если ему станет доступна сессия администратора, то он просто-напросто в админку сможет войти
killer8080
Цитата (zvezda_t @ 14.06.2013 - 11:56)
если он пока сессия висит - как то прочтет с его формы значение csrf_token = то сможет сделать запрос. или это значение поля hidden не возможно прочитать?

не сможет он получить доступ к этому значению, если даже он откроет у себя в скрытом ифрейме атакуемую страницу, доступа к контенту ифрейма получить не сможет, тут стоит на страже same origin policy, запрещающее доступ к контенту ифрейма, загруженного с другого домена. В этом собственно и суть. Но тут есть важный момент, на сайте не должно быть XSS уязвимостей, через них можно угнать токен.



Спустя 5 минут, 20 секунд killer8080 написал(а):
Цитата (killer8080 @ 14.06.2013 - 12:42)
Но тут есть важный момент, на сайте не должно быть XSS уязвимостей, через них можно угнать токен.

правда при наличии XSS особой необходимости в CSRF уже нет smile.gif
zvezda_t
killer8080
правильно я поняла, что это поле должно быть в iframe

<iframe>
<input
type="hidden" name="csrf_token" value="<?=$_SESSION['csrf_token']?>" />
</iframe>


?

_____________

Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)
killer8080
Цитата (zvezda_t @ 14.06.2013 - 12:50)
killer8080
правильно я поняла, что это поле должно быть в iframe

конечно нет, поле может быть только в форме smile.gif
zvezda_t
killer8080, но в любом случае его значение из формы прочесть нельзя. да?


_____________

Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)
killer8080
Цитата (zvezda_t @ 14.06.2013 - 13:21)
killer8080, но в любом случае его значение из формы прочесть нельзя. да?

нельзя
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.