Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ключи шифрования и защита от сниффинга
 
 автор: ~AquaZ~   (08.01.2010 в 16:42)   письмо автору
 
 

Здравствуйте! У меня два вопроса:
1) Лучше применять ключ шифрования выбранный случайно из нескольких, или шифровать только одним ключом (я шифрую печеньки)?
2) Как защититься от сниффинга (отснифить строку печенек - получить аккаунт)?

З.Ы. Печеньки - Cookies

  Ответить  
 
 автор: @ndry   (11.01.2010 в 04:39)   письмо автору
 
   для: ~AquaZ~   (08.01.2010 в 16:42)
 

Сразу видно, что у вас подход к cookies совершенно неправильный. Какие данные вы там хотите шифровать? Имя сессии? Никакой секретной информации там не должно быть, даже в зашифрованном виде. А чтобы ID сессии не подходил другим пользователям просто в данных сессий храните хеш от айпи+брайзер пользователя и в случае несовпадения с текущими данными - сбрасывать сессию.

$hash = md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT'];

(код писал прямо на форум, могут быть ошибки)

  Ответить  
 
 автор: neadekvat   (11.01.2010 в 09:08)   письмо автору
 
   для: @ndry   (11.01.2010 в 04:39)
 

А у меня и всего моего города айпи динамический. Предлагаете дружно сосать ... как мишка лапу?

  Ответить  
 
 автор: GeorgeIV   (11.01.2010 в 10:32)   письмо автору
 
   для: neadekvat   (11.01.2010 в 09:08)
 

можете и сосать. только на время сессиии ИП не меняется провайдерром

  Ответить  
 
 автор: Valick   (11.01.2010 в 11:14)   письмо автору
 
   для: GeorgeIV   (11.01.2010 в 10:32)
 

хи-хи.. это не так
Я читал, что АйПи может смениться в любой момент абсолютно прозрачно для клиента, те без разрыва соединения с прровайдером

  Ответить  
 
 автор: @ndry   (11.01.2010 в 11:38)   письмо автору
 
   для: Valick   (11.01.2010 в 11:14)
 

Ссылку на источник.

Я об этом никогда не слышал и в любом случае провайдеры (насколько я знаю) не используют такие возможности ибо это чревато последствиями: некоторые сетевые приложения не получат ответы на свои запрос и ответ может попасть не в те руки.

  Ответить  
 
 автор: Valick   (12.01.2010 в 11:42)   письмо автору
 
   для: @ndry   (11.01.2010 в 11:38)
 

Ссылку дать не могу, я читал это в книге. Если найду напишу.

  Ответить  
 
 автор: Trianon   (11.01.2010 в 11:51)   письмо автору
 
   для: Valick   (11.01.2010 в 11:14)
 

Это как?

DHCP-сервер может отозвать адрес раньше истечения срока аренды?

  Ответить  
 
 автор: ~AquaZ~   (11.01.2010 в 14:37)   письмо автору
 
   для: Trianon   (11.01.2010 в 11:51)
 

Есть люди, у которых IP меняется при каждом обращении к странице. Они залогинятся, и их выкинет.
Я шифрую такую строчку:
serialize(array(str login, str pass, int status))
третий элемент - права юзера (-1...3).

Так делать, наверное, ненадо.
Расскажите, пожалуйста, как сделать несниффаемую авторизацию на Cookies?
У меня для уважающих себя людей (т.е. у кого нормальный браузер) сделал страничку для Digest-аутентификации (не снифаеццо. Если скажите, что сниффаеццо, покажите на примере). Но как хранить это между закрытиями браузера?

  Ответить  
 
 автор: @ndry   (11.01.2010 в 14:43)   письмо автору
 
   для: ~AquaZ~   (11.01.2010 в 14:37)
 

> Есть люди, у которых IP меняется при каждом обращении к странице. Они залогинятся, и их выкинет.

И это хорошо, а если безопасность им не важна добавьте флаг при авторизации "Не контролировать IP адрес" и в случае его установки не вносите хеш REMOTE_ADDR.

  Ответить  
 
 автор: ~AquaZ~   (11.01.2010 в 15:15)   письмо автору
 
   для: @ndry   (11.01.2010 в 14:43)
 

Я не могу добавить флаг, я использую WWW-аутентификацию.

  Ответить  
 
 автор: @ndry   (11.01.2010 в 15:29)   письмо автору
 
   для: ~AquaZ~   (11.01.2010 в 15:15)
 

В таком случае пусть лучше их выкидывает, чем вы будете использовать ваш хеш, который, по сути, бесполезен.

Хотя если безопасность для вас не критична, то уберите вообще эту методику защиты. Проводите простую авторизацию и всё.

  Ответить  
 
 автор: ~AquaZ~   (11.01.2010 в 15:37)   письмо автору
 
   для: @ndry   (11.01.2010 в 15:29)
 

Безопасность критична. Можно послать всё на и просто не запоминать юзера, но хочется, чтобы эта возможность всё-таки была.

  Ответить  
 
 автор: @ndry   (11.01.2010 в 15:40)   письмо автору
 
   для: ~AquaZ~   (11.01.2010 в 15:37)
 

Ну так делайте так, как я говорил - айпи и юзерагент вносите в хеш, а люди с динамик IP пусть тогда проходят авторизацию повторно.

Может вы не правильно применяете этот хеш? Его нужно хранить в переменной сессии (не к cookies) и сравнивать с текущими параметрами. Cookies всегда хранят только SID.

  Ответить  
 
 автор: ~AquaZ~   (11.01.2010 в 17:20)   письмо автору
 
   для: @ndry   (11.01.2010 в 15:40)
 

Сессии не долговечны. А вот как сделать авторизацию на куках?

  Ответить  
 
 автор: @ndry   (11.01.2010 в 18:35)   письмо автору
 
   для: ~AquaZ~   (11.01.2010 в 17:20)
 

Безопасно этого делать не получится, максимум в куках можно хранить логин пользователя. Если этот вопрос для вас критичен, то продлите время жизни сессий.

Подумайте сами: в куках пользователя находится идентификационные данные (причём вы хотите чтобы их хватило для авторизации) и любой кто перехватит содержимое (а это делается невероятно легко, особенно при использовании WiFi или внутрикорпортивной сети) получит доступ и к вашему сайту от чужого имени.

  Ответить  
 
 автор: Рома   (11.01.2010 в 19:13)   письмо автору
 
   для: @ndry   (11.01.2010 в 18:35)
 

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

  Ответить  
 
 автор: ~AquaZ~   (11.01.2010 в 19:35)   письмо автору
 
   для: Рома   (11.01.2010 в 19:13)
 

Если авторизация на куках, шансов много.

  Ответить  
 
 автор: @ndry   (11.01.2010 в 19:43)   письмо автору
 
   для: Рома   (11.01.2010 в 19:13)
 

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

В любом случае если данные себя не скомпрометируют (перехватить логин и пароль в чистом виде не получится) доступ значительно усложнится, а особенно - с контролем айпи и юзер агента. Атакующему придётся получить доступ к клиентской машине (ставить кейлоггер или искать сохранённый пароль) и это уже не ваши проблемы, а проблемы защищённости самых клиентов (как минимум претензий к вам быть не может).

Слабым местом в моём подходе останется лишь то, что данные для первоначальной авторизации передаются в не зашифрованном виде, тут лучше использовать SSL.

При неправильном же подходе достаточно перехватить лишь один запрос к сайту. Однажды украденный идентификатор с кукисов позволит проходить авторизацию бесконечное кол-во раз не утруждаясь подменой IP и пр.

  Ответить  
 
 автор: ~AquaZ~   (11.01.2010 в 20:19)   письмо автору
 
   для: @ndry   (11.01.2010 в 19:43)
 

Вот самая большая уязвимость и есть в SID.
А SSL - удовольствие очень дорогое.

  Ответить  
 
 автор: @ndry   (11.01.2010 в 23:11)   письмо автору
 
   для: ~AquaZ~   (11.01.2010 в 20:19)
 

Ничего не дорогое, а SID какраз я и рассказал как защищать.

  Ответить  
 
 автор: Рома   (11.01.2010 в 21:17)   письмо автору
 
   для: @ndry   (11.01.2010 в 19:43)
 

>Слабым местом в моём подходе останется лишь то, что данные для первоначальной авторизации передаются в не зашифрованном виде, тут лучше использовать SSL.
специально для слабых мест

  Ответить  
 
 автор: @ndry   (11.01.2010 в 23:15)   письмо автору
 
   для: Рома   (11.01.2010 в 21:17)
 

По вашей ссылке стойкость хеша только страдает из-за использования соли (challenge). Она бесполезна. Алгоритм имеет право на жизнь лишь в узких рамках и большинство атак он всё-равно не остановит.

  Ответить  
 
 автор: Рома   (12.01.2010 в 00:10)   письмо автору
 
   для: @ndry   (11.01.2010 в 23:15)
 

>По вашей ссылке стойкость хеша только страдает из-за использования соли (challenge).

Простите, стойкость чего страдает?

  Ответить  
 
 автор: @ndry   (12.01.2010 в 00:14)   письмо автору
 
   для: Рома   (12.01.2010 в 00:10)
 

В зависимости от длинны пароля и длинны соли стойкость хеширования (md5 - функция хеширования) страдает в плане безопасности (те вы позволяете злоумышленнику знать часть пароля заранее), пока-что в ней нашли только коллизии, но полноценный взлом не сильно затянется. Как минимум соль не добавит безопасности, абсолютно, ведь злоумышленник сможет её видеть в чистом виде.

  Ответить  
 
 автор: Рома   (12.01.2010 в 00:44)   письмо автору
 
   для: @ndry   (12.01.2010 в 00:14)
 

>те вы позволяете злоумышленнику знать часть пароля заранее.

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

  Ответить  
 
 автор: @ndry   (12.01.2010 в 00:58)   письмо автору
 
   для: Рома   (12.01.2010 в 00:44)
 

Скорее наоборот, смотрите мы возвращаем скрипту вот это:
MD5(challenge + MD5(password))

что значит, что хеширование используется 2 раза над строкой и число коллизий сразу растёт. Сложность перебора наоборот, но с использованием больших радужных таблиц - это мелочь.

Злоумышленнику не составит труда перехватит значение challenge, что ещё больше упрощает его доступ к данным (часть первоначального хеша зарание известна). Зачем тогда включать эту переменную в процесс? Она ничего не даёт по сути, автор просто насмотрелся на приёмы шифровки пароля с солью (которая в отличии от вашего примера хакеру не известна) в пхп, которая используется для противостоянию дешифровки паролей краденных с базы.

И как там написано от атаки типа Man-in-the-middle этот вышеуказанный способ вообще не поможет. Только шифрование, те. преимущественно SSL.

И учтите что от в некоторых случаях работа порта функции md5 в JS может отличаться от работы PHP и давать разные результаты, пользователь никогда потом не сможет залогиниться. Об этом написано в той статье.

  Ответить  
 
 автор: Рома   (12.01.2010 в 02:08)   письмо автору
 
   для: @ndry   (12.01.2010 в 00:58)
 

Продолжайте противостоять дешифровке краденых паролей из базы...

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования