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

Форум MySQL

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

 

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

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

тема: Необходимость хэширования паролей
 
 автор: Shorr Kan   (27.12.2007 в 13:08)   письмо автору
 
 

Предпочитают поля password записывать в хэше, а не сам пароль. Почему? Считается, что безопаснее. Чем? Если скрипт написан грамотно, если он не выводит куски таблиц, то никак посмотреть пароли, кроме как войдя во что-то вроде phpmyadmin нельзя. Ну а в этом случае - хоть там хэшированный пароль, хоть нет - уже неважно.
Так в чем смысл хэширования паролей в табличках?

   
 
 автор: Loki   (27.12.2007 в 13:29)   письмо автору
 
   для: Shorr Kan   (27.12.2007 в 13:08)
 

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

   
 
 автор: Shorr Kan   (27.12.2007 в 13:35)   письмо автору
 
   для: Loki   (27.12.2007 в 13:29)
 

И именно из-за этого "хэш forever" ?

   
 
 автор: Loki   (27.12.2007 в 13:39)   письмо автору
 
   для: Shorr Kan   (27.12.2007 в 13:35)
 

Не только. Еще за уникальность (не абсолютную, правда).

   
 
 автор: Shorr Kan   (27.12.2007 в 15:15)   письмо автору
 
   для: Loki   (27.12.2007 в 13:39)
 

А смысл в уникальности поля с паролями? Да хоть у всех юзеров пусть будет qwerty - нам-то что...

   
 
 автор: Loki   (27.12.2007 в 16:07)   письмо автору
 
   для: Shorr Kan   (27.12.2007 в 15:15)
 

Уникальность не паролей, а хэшей. Если алгоритм на строчку "qwerty" и на строчку "123456" будет выдавать одинаковый хэш, то кто таким пользоваться будет?

   
 
 автор: Shorr Kan   (27.12.2007 в 16:52)   письмо автору
 
   для: Loki   (27.12.2007 в 16:07)
 

Но каков смысл-то? Зачем нам уникальность хэшей, если связка логин+пароль сама по себе уникальна?

   
 
 автор: Loki   (28.12.2007 в 10:50)   письмо автору
 
   для: Shorr Kan   (27.12.2007 в 16:52)
 

чтобы одному хэшу соответствовал один пароль.

   
 
 автор: cheops   (27.12.2007 в 13:47)   письмо автору
 
   для: Shorr Kan   (27.12.2007 в 13:08)
 

Если сайт, не обязательно в этом Web-приложении имеет SQL-инъекцию, можно посмотреть пароли, доступ к базе данных может быть получен, если злоумышленику удасться загрузить PHP SHELL... В любом случае, если база данных будет украдена, злоумышленику потребуется время на восстановление паролей - за это время многие пароли могут потерять актуальность.

   
 
 автор: Shorr Kan   (27.12.2007 в 15:14)   письмо автору
 
   для: cheops   (27.12.2007 в 13:47)
 

"удастся загрузить PHP SHELL" - каким образом? Проверяем все данные, типы файлов, htmlspecialchars на выводе... каким образом он загрузит php-shell ?
Если он загрузит php-shell, то базу он получит за двадцать секунд. Как и исходники файлов. Всегда можно сделать нечто вроде мастер-пароля или вообще временно сменить пароль у пользователя-жертвы.
Ну то есть... неясна мне пока реальная польза хэша паролей.

   
 
 автор: Unkind   (27.12.2007 в 15:57)   письмо автору
 
   для: Shorr Kan   (27.12.2007 в 15:14)
 

Неважно каким образом. Главное, что если украдут базу с хешами, то она мало что даст злоумышленнику.

В этом и есть идея хеширования паролей.

Вам, собственно, это уже и сказали.

Если это Вам этого недостаточно, то встает вопрос а зачем Вам пароли обычные? Какой Вам от этого толк? Пароли это такая вещь интимная :)))

   
 
 автор: Shorr Kan   (27.12.2007 в 16:55)   письмо автору
 
   для: Unkind   (27.12.2007 в 15:57)
 

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

Почему же она мало что даст. Сам по себе дамп с базой никто получить не может, если только его не сольют свои (а тогда слить могут всё, вплоть до рут-пасса). Ну а если у человека будет доступ в базу или на фтп - толку-то от хэша паролей?

"встает вопрос"
Пароли - понятно. Аутентификация. Но зачем их хэшировать?

Считайте мой интерес не интересом зануды, а интересом любопытствующего. Я интересуюсь не потому, что хочу доказать или развеять что-то - я интересуюсь потому, что мне интересно.

   
 
 автор: Thrasher   (27.12.2007 в 17:14)   письмо автору
 
   для: Shorr Kan   (27.12.2007 в 16:55)
 

>>Но зачем их хэшировать?
Хотя бы потому, что у большинства пользователей один пароль для всего.
Если пароли не хэшировать, то украл базу, посмотрел пароли и зашел на почту юзера или другие сервисы, где у юзера такой же пароль.
При хэшировании так не получится.

   
 
 автор: Shorr Kan   (27.12.2007 в 17:58)   письмо автору
 
   для: Thrasher   (27.12.2007 в 17:14)
 

Угу. Это причина номер раз. А еще будет?

   
 
 автор: Unkind   (27.12.2007 в 19:11)   письмо автору
 
   для: Shorr Kan   (27.12.2007 в 16:55)
 

> Почему же она мало что даст.
Потому что злоумышленник не сможет, кроме как перебором получить реальные пароли. Вроде и это говорили. По-моему, Вы начинаете именно занудствовать.

> Это причина номер раз. А еще будет?
А нужно больше?

   
 
 автор: Shorr Kan   (27.12.2007 в 20:47)   письмо автору
 
   для: Unkind   (27.12.2007 в 19:11)
 

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

"По-моему, Вы начинаете именно занудствовать."
Нет.

"А нужно больше?"
Да, потому что лично я не считаю, что создатели одного сервиса должны себя нагружать сохранностью данных пользователя на других сервисах. Иначе говоря, я согласен, что эта причина реальна, но не для меня. А я хотел бы понять всю картину.

Повторю по занудствованию: чем мы меньше знаем, тем наивнее наши вопросы. И сейчас я на том этапе, на котором хочу получать подтверждения/опровержения своих мнений и своего стиля программирования. Собственно, это единственная причина, почему я создал эту тему. Ибо я хочу учиться, а не делать, как привык. И меня не устраивает "хэшировать надо". Я хочу четко понять причину, по которой это надо делать. Все названные причины, кроме "причины номер раз" я считаю неактуальными при правильном подходе к программированию, отображению ошибок и конфигурированию сервера.

   
 
 автор: Unkind   (27.12.2007 в 21:28)   письмо автору
 
   для: Shorr Kan   (27.12.2007 в 20:47)
 

> Как я уже сказал, никто не может получить дамп базы без предательства
Ну это Вы зря. Например, на этом же форуме когда-то воровали пароли и заходили под чужими никами. Если бы хранились хеши (как уже сейчас), то как минимум узнать пароль бы уже не смогли. Никто никого не предавал, просто была уязвимость.

Я просто чувствую, что Вы хотите сказать "Ну напишу я без уязвимостей. Зачем мне Ваше хеширование?".
Уязвимость может быть у другого скрипта на этом же сайте, автор которого не Вы; могут с помощью трояна украсть Ваш пароль и слить базы. Да, тогда взломщики могут потереть весь сайт, но, вероятно, Вы его восстановите из backup'а, а вот базы вернуть не сможете. Они уже украдены. И после восстановления аккаунты будут под угрозой, если их владельцы не успеют сменить пароль.
Особенно будет больно, если проект очень важный. Это такой способ защиты на крайний случай.
Я тоже уверен в своих скриптах, но все равно храню в базе данных только хеши, но не сами пароли. Просто я, как правило, продаю свои скрипты. И обычно не Васе Пупкину с нулевой посещаемостью. Не хочется потом краснеть, если покупатель потом пострадает по моей вине. При чем сильно пострадает.

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

   
 
 автор: Shorr Kan   (27.12.2007 в 21:53)   письмо автору
 
   для: Unkind   (27.12.2007 в 21:28)
 

"Например, на этом же форуме когда-то воровали пароли"
Это потому что выводились ошибки. Я прекрасно помню то видео и я помню пароль нашего уважаемого Дизайнера ;)
Не выводим ошибки - половина проблем решена.

"Я просто чувствую, что Вы хотите сказать"
Почти. Я хочу сказать: "я считаю, что пишу так, что невозможно воспользоваться незахэшированными паролями. И если я неправ - я хочу понять это. Если же я прав - я хочу убедиться в этом".

"на этом же сайте, автор которого не Вы"
Не мой случай. Такого не бывает.

"могут с помощью трояна украсть Ваш пароль и слить базы"
Трояна где - на локальном компе?

Всё что ниже, до "Безопасность - единственная причина." - это высказывания, с убеждением, что взлом произошел. Я говорю о ситуации, когда взлома не может быть.

"Если она Вам кажется недостаточной, то Ваше право хранить пароли, а не их хеши."
Безопасность мне кажется очень достаточной причиной. Просто я хочу понять, почему хэши - безопасно. Я не считаю, что это (хэширование) решает даже долю проблем. Я могу ошибаться. Если так - объясните, если есть время. До сих пор я слышал только одно: "если украли - будет труднее...". Но я не вижу ни одной причины, почему могут украсть дамп базы без взлома сервера. А если произошел взлом сервера - да хоть обхэшируйся.

   
 
 автор: Unkind   (27.12.2007 в 22:13)   письмо автору
 
   для: Shorr Kan   (27.12.2007 в 21:53)
 

> Это потому что выводились ошибки.
Какие еще ошибки? Вы считаете опеределить и воспользоваться уязвимостью без ошибок нельзя? Вы глубоко ошибаетесь.

> Я говорю о ситуации, когда взлома не может быть
В такой ситуации Вам ничего не грозит.

   
 
 автор: Shorr Kan   (28.12.2007 в 02:57)   письмо автору
 
   для: Unkind   (27.12.2007 в 22:13)
 

"Какие еще ошибки? Вы считаете опеределить и воспользоваться уязвимостью без ошибок нельзя? Вы глубоко ошибаетесь."
"В такой ситуации Вам ничего не грозит."

Я надеялся, что вы поняли, что я имел ввиду.

   
 
 автор: Unkind   (28.12.2007 в 03:13)   письмо автору
 
   для: Shorr Kan   (28.12.2007 в 02:57)
 

Очень, очень печально, что Вы не поняли ничего.

   
 
 автор: Shorr Kan   (28.12.2007 в 05:30)   письмо автору
 
   для: Unkind   (28.12.2007 в 03:13)
 

Угу

   
 
 автор: Thrasher   (28.12.2007 в 10:09)   письмо автору
 
   для: Shorr Kan   (28.12.2007 в 05:30)
 

Кстати, вы правы вот в чем. Если ваши скрипты действительно не имеют дыр, то шифрование не нужно. Но такого, как показывает практика, не бывает. Возможно это не ваши, дыры, а хостинга, но уязвимость можно найти в подавляющем большинстве случаев. Т.е. защита скриптов - это как-бы первое кольцо обороны, а хэширование - это второе кольцо, на случай, если первое будет прорвано. Абсолютно неуязвимые скрипты бывают только теоретически, а практически - их пишут люди, а им свойственно ошибаться. Если бы был скажем абсолютно защищенный скрипт авторизации, то все только им бы и пользовались. Но такого нет, поэтому каждый изобретает какие-то свои ноу-хау для защиты и в каждом из них есть слабые места.
Если вы напишите неуязвимый сервис - решиться глобальная проблема, вы сможете его продавать за огромные деньги. Попробуйте...

   
 
 автор: Shorr Kan   (28.12.2007 в 19:22)   письмо автору
 
   для: Thrasher   (28.12.2007 в 10:09)
 

Понятно

   
 
 автор: Trianon   (27.12.2007 в 22:46)   письмо автору
 
   для: Shorr Kan   (27.12.2007 в 20:47)
 

>Как я уже сказал, никто не может получить дамп базы без предательства
Чтобы получить один пароль (или хеш) совсем необязательно иметь весь дамп.

>Да, потому что лично я не считаю, что создатели одного сервиса должны себя нагружать сохранностью данных пользователя на других сервисах.

Создатели сервиса должны нагружать себя ответственностью за личные данные пользователя.
(Это кстати, по-моему, уже согласно закона. )
Так вот, пароль - это личные данные.
И самый лучший способ его не выдать - вообще его не знать.
Одним из подходов к этому незнанию является применение хешей.
Хотя простое md5(password) , конечно, позволит достичь немногого.

   
 
 автор: Shorr Kan   (28.12.2007 в 02:57)   письмо автору
 
   для: Trianon   (27.12.2007 в 22:46)
 

"Чтобы получить один пароль (или хеш) совсем необязательно иметь весь дамп. "
Так может быть, вы знаете примеры, как получали пароль? Без учета копания в мусорке или заглядывания через плечо. А так же, без учета использования простых уязвимостей и недосмотров скрипта.

"лучший способ его не выдать - вообще его не знать"
Это верно, но всё же это несовсем то, что я пытаюсь понять. Если не говорить о законе, не говорить о благоразумии и спокойствии - в чем именно заключается опасность незахэшированных паролей? Давайте отбросим такие факторы, как взлом через соседей по серверу или через ошибки в самом сервере (это неинтересно), а так же не будем учитывать соц.инженерию и mysql-injection . Вывод ошибок отключен (то есть взломщик не будет видеть, где там какая ошибка). Всё что вводится - экранируется и/или срезается (плохие символы). Всё что выводится - htmlspecialchars.

Где узкие места в этом случае?

   
 
 автор: Loki   (28.12.2007 в 10:54)   письмо автору
 
   для: Shorr Kan   (28.12.2007 в 02:57)
 

>Где узкие места в этом случае?
В заднице у админа - если туда засунуть паяльник, то пароли от неприступного хостинга будут известны меньше чем через минуту.

Вот вам встречный вопрос для размышления: если в банковских хранилищах такие толстые двери, то зачем там охрана и сигнализация?
Если сможете ответить на него, то и вопрос с хэшами, скорее всего, прояснится.

   
 
 автор: Shorr Kan   (28.12.2007 в 19:20)   письмо автору
 
   для: Loki   (28.12.2007 в 10:54)
 

Немного неточный пример - толстые стены можно взять методичным соскребыванием. Со скриптами такого не бывает. Передача чего-то не того - бывает. Перехват пакетов - бывает. Это сравнение разных категорий, аналогия совсем не годится. Но суть я понял. Не понял я лишь одного - засунули ему паяльник... так ведь это рут-доступ на сервер... а тут уже всё - в том числе и запись введенного в формы в логи. Хэширование тут как-то в стороне остается.

   
 
 автор: Trianon   (29.12.2007 в 04:13)   письмо автору
 
   для: Shorr Kan   (28.12.2007 в 19:20)
 

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

Да и с паяльником, не всегда нарвешься на того кто знает именно рут-пароль.

   
 
 автор: Shorr Kan   (29.12.2007 в 06:12)   письмо автору
 
   для: Trianon   (29.12.2007 в 04:13)
 

Теперь ясно

   
 
 автор: cheops   (28.12.2007 в 11:56)   письмо автору
 
   для: Shorr Kan   (27.12.2007 в 15:14)
 

>каким образом он загрузит php-shell ?
А это может быть не ваш скрипт, а соседний - нет возможности контролировать все скрипты, которые устанавливаются на сайт (по крайней мере такая возможность редко бывает).

   
 
 автор: Shorr Kan   (28.12.2007 в 19:17)   письмо автору
 
   для: cheops   (28.12.2007 в 11:56)
 

Тогда понятно

   
Rambler's Top100
вверх

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