Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Немного о токенах и CSRF

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: будет ли от CSRF защита вида token=secret вместо принятой token = salt + ":" + MD5(salt + ":" + secret)
ПТО
Отправлено: 06 Августа, 2015 - 11:49:54
Post Id



Посетитель


Покинул форум
Сообщений всего: 395
Дата рег-ции: Янв. 2012  


Помог: 3 раз(а)




будет ли от CSRF защита вида token=secret
вместо принятой token = salt + ":" + MD5(salt + ":" + secret)

Ситуация, допустим, такая: при авторизации на сервере генерируется secret.
В каждую форму в виде чего угодно (допустим, в виде <input type="hidden" name="token" value="secret"/> ) дописывается это самый секрет.
Вопрос: будет ли обеспечена таким образом атака от CSRF?
Мои рассуждения: по мне, так да. Если сайт злоумышленника, на который зашла жертва, отправит запрос на наш сервер, то разницы между двумя токенами я не вижу: что token=secret, что token = salt + ":" + MD5(salt + ":" + secret) не возможно будет угадать.

Какие ваши рассуждения? Хорошо
 
 Top
DeepVarvar Супермодератор
Отправлено: 06 Августа, 2015 - 13:02:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Что ты понимаешь под словом "авторизация"?
 
 Top
ПТО
Отправлено: 06 Августа, 2015 - 13:34:24
Post Id



Посетитель


Покинул форум
Сообщений всего: 395
Дата рег-ции: Янв. 2012  


Помог: 3 раз(а)




DeepVarvar пишет:
Что ты понимаешь под словом "авторизация"?

ввод логина и пароля на стороне клиента, проверка на стороне сервера такого логина и такого пароля, инициация сессии.
+ запись в сессию secret
 
 Top
DeepVarvar Супермодератор
Отправлено: 06 Августа, 2015 - 13:36:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Т.е. на протяжении всего срока пока пользак залогинен в системе, секрет не изменяется?
В таком случае, нет, от CSRF не спасет.
 
 Top
andrewkard
Отправлено: 06 Августа, 2015 - 13:43:32
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




DeepVarvar
Как злоумышленник может узнать secret жертвы?
 
 Top
DeepVarvar Супермодератор
Отправлено: 06 Августа, 2015 - 14:20:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Защем ему узнавать? В его примере он всегда одинаковый.
 
 Top
ПТО
Отправлено: 06 Августа, 2015 - 14:46:53
Post Id



Посетитель


Покинул форум
Сообщений всего: 395
Дата рег-ции: Янв. 2012  


Помог: 3 раз(а)




DeepVarvar пишет:
Т.е. на протяжении всего срока пока пользак залогинен в системе, секрет не изменяется?
В таком случае, нет, от CSRF не спасет.

andrewkard пишет:
DeepVarvar
Как злоумышленник может узнать secret жертвы?

DeepVarvar пишет:
Защем ему узнавать? В его примере он всегда одинаковый.

DeepVarvar,
Вы, уважаемый, сами себе противоречите.
Секрет генерируется при авторизации пользователя.
Да, пока пользователь залогинен, секрет остается неизменным. А вы как хотели?

andrewkard прав, утверждая, что злоумышленник не сможет узнать secret жертвы на протяжении всего срока его "залогиненности"
 
 Top
DeepVarvar Супермодератор
Отправлено: 06 Августа, 2015 - 15:32:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




ПТО пишет:
не сможет узнать secret жертвы
Находясь на том же хосте -- сможет.
 
 Top
Ch_chov
Отправлено: 06 Августа, 2015 - 15:43:34
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Цитата:
злоумышленник не сможет узнать secret жертвы

Зависит от того, как вы этот секрет создаете.
К примеру, если у вас что то вроде этого, то атакующий может сгенерировать такой же токен самостоятельно. Потому что ИД пользователя обычно не прячут. Он может присутствовать в URL.

$_SESSION['token'] = md5($user_id);

Если вы используете один и тот же токен на протяжении всей сессии, то его вообще никуда записывать не надо. Потому что ИД сессии по сути и есть то что вам нужно. Соль и хэширование здесь используются, я думаю, по тем же причинам что при хранении паролей (хэшей). Если сессии или хотя бы идентификаторы сессий "утекли" с вашего сервера, то хэширование токенов с солью поможет избежать CSRF.

Простой пример:

PHP:
скопировать код в буфер обмена
  1. if (isset($_POST['token']) && $_POST['token'] == md5($solt . session_id())) {
  2.   // Форма валидная.
  3. }


Для лучшей надежности вместо md5 можно использовать какую нибудь более сложную криптографическую функцию.

(Отредактировано автором: 06 Августа, 2015 - 17:53:29)

 
 Top
ПТО
Отправлено: 06 Августа, 2015 - 16:10:29
Post Id



Посетитель


Покинул форум
Сообщений всего: 395
Дата рег-ции: Янв. 2012  


Помог: 3 раз(а)




[quote=Ch_chov]Зависит от того, как вы этот секрет создаете. [/quot]
полный рандом (случайным образом)
 
 Top
DeepVarvar Супермодератор
Отправлено: 06 Августа, 2015 - 16:15:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




ПТО пишет:
полный рандом (случайным образом)
Используешь хардварный генератор с получением энтропии из окружающей среды?
 
 Top
ПТО
Отправлено: 06 Августа, 2015 - 16:29:17
Post Id



Посетитель


Покинул форум
Сообщений всего: 395
Дата рег-ции: Янв. 2012  


Помог: 3 раз(а)




DeepVarvar пишет:
ПТО пишет:
полный рандом (случайным образом)
Используешь хардварный генератор с получением энтропии из окружающей среды?

прямо в точку
 
 Top
DeepVarvar Супермодератор
Отправлено: 06 Августа, 2015 - 16:45:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Вобщем я так понял -- ты оставляешь дырень с статичным секретом, да?
 
 Top
MiksIr
Отправлено: 06 Августа, 2015 - 17:01:08
Post Id


Забанен


Покинул форум
Сообщений всего: 378
Дата рег-ции: Сент. 2014  


Помог: 10 раз(а)

[+]


Для CSRF достаточно. Если под secert подразумевается секрет пользователя, а не приложения.

Хотя можно поступить в какой-то мере еще проще и создавать токен как hash от клиентской информации (ip, юзер-агент и т.п.) + какой-то фиксированный секрет приложения. И хранить в сессии ничего не нужно будет.


-----
self-banned
 
 Top
Panoptik
Отправлено: 06 Августа, 2015 - 17:45:58
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




нет смысла изощряться в генерации сверх криптостойкого токена цсрф ибо смысл использовать его всего один раз

если у вас проблемы с этим, то похоже что вы не понимаете смысла цсрф и его особенностей использования


-----
Just do it
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB