|
|
|
| Предпочитают поля password записывать в хэше, а не сам пароль. Почему? Считается, что безопаснее. Чем? Если скрипт написан грамотно, если он не выводит куски таблиц, то никак посмотреть пароли, кроме как войдя во что-то вроде phpmyadmin нельзя. Ну а в этом случае - хоть там хэшированный пароль, хоть нет - уже неважно.
Так в чем смысл хэширования паролей в табличках? | |
|
|
|
|
|
|
|
для: Shorr Kan
(27.12.2007 в 13:08)
| | в любом коде могут быть ошибки, в том числе и в коде самого сервера.
вас могут ломануть и через хостера и через соседний хост.
пароли, может попросту слить нечистый на руку админ. | |
|
|
|
|
|
|
|
для: Loki
(27.12.2007 в 13:29)
| | И именно из-за этого "хэш forever" ? | |
|
|
|
|
|
|
|
для: Shorr Kan
(27.12.2007 в 13:35)
| | Не только. Еще за уникальность (не абсолютную, правда). | |
|
|
|
|
|
|
|
для: Loki
(27.12.2007 в 13:39)
| | А смысл в уникальности поля с паролями? Да хоть у всех юзеров пусть будет qwerty - нам-то что... | |
|
|
|
|
|
|
|
для: Shorr Kan
(27.12.2007 в 15:15)
| | Уникальность не паролей, а хэшей. Если алгоритм на строчку "qwerty" и на строчку "123456" будет выдавать одинаковый хэш, то кто таким пользоваться будет? | |
|
|
|
|
|
|
|
для: Loki
(27.12.2007 в 16:07)
| | Но каков смысл-то? Зачем нам уникальность хэшей, если связка логин+пароль сама по себе уникальна? | |
|
|
|
|
|
|
|
для: Shorr Kan
(27.12.2007 в 16:52)
| | чтобы одному хэшу соответствовал один пароль. | |
|
|
|
|
|
|
|
для: Shorr Kan
(27.12.2007 в 13:08)
| | Если сайт, не обязательно в этом Web-приложении имеет SQL-инъекцию, можно посмотреть пароли, доступ к базе данных может быть получен, если злоумышленику удасться загрузить PHP SHELL... В любом случае, если база данных будет украдена, злоумышленику потребуется время на восстановление паролей - за это время многие пароли могут потерять актуальность. | |
|
|
|
|
|
|
|
для: cheops
(27.12.2007 в 13:47)
| | "удастся загрузить PHP SHELL" - каким образом? Проверяем все данные, типы файлов, htmlspecialchars на выводе... каким образом он загрузит php-shell ?
Если он загрузит php-shell, то базу он получит за двадцать секунд. Как и исходники файлов. Всегда можно сделать нечто вроде мастер-пароля или вообще временно сменить пароль у пользователя-жертвы.
Ну то есть... неясна мне пока реальная польза хэша паролей. | |
|
|
|
|
|
|
|
для: Shorr Kan
(27.12.2007 в 15:14)
| | Неважно каким образом. Главное, что если украдут базу с хешами, то она мало что даст злоумышленнику.
В этом и есть идея хеширования паролей.
Вам, собственно, это уже и сказали.
Если это Вам этого недостаточно, то встает вопрос а зачем Вам пароли обычные? Какой Вам от этого толк? Пароли это такая вещь интимная :))) | |
|
|
|
|
|
|
|
для: Unkind
(27.12.2007 в 15:57)
| |
Главное, что если украдут базу с хешами, то она мало что даст злоумышленнику.
|
Почему же она мало что даст. Сам по себе дамп с базой никто получить не может, если только его не сольют свои (а тогда слить могут всё, вплоть до рут-пасса). Ну а если у человека будет доступ в базу или на фтп - толку-то от хэша паролей?
"встает вопрос"
Пароли - понятно. Аутентификация. Но зачем их хэшировать?
Считайте мой интерес не интересом зануды, а интересом любопытствующего. Я интересуюсь не потому, что хочу доказать или развеять что-то - я интересуюсь потому, что мне интересно. | |
|
|
|
|
|
|
|
для: Shorr Kan
(27.12.2007 в 16:55)
| | >>Но зачем их хэшировать?
Хотя бы потому, что у большинства пользователей один пароль для всего.
Если пароли не хэшировать, то украл базу, посмотрел пароли и зашел на почту юзера или другие сервисы, где у юзера такой же пароль.
При хэшировании так не получится. | |
|
|
|
|
|
|
|
для: Thrasher
(27.12.2007 в 17:14)
| | Угу. Это причина номер раз. А еще будет? | |
|
|
|
|
|
|
|
для: Shorr Kan
(27.12.2007 в 16:55)
| | > Почему же она мало что даст.
Потому что злоумышленник не сможет, кроме как перебором получить реальные пароли. Вроде и это говорили. По-моему, Вы начинаете именно занудствовать.
> Это причина номер раз. А еще будет?
А нужно больше? | |
|
|
|
|
|
|
|
для: Unkind
(27.12.2007 в 19:11)
| | "Потому что злоумышленник не сможет, кроме как перебором получить реальные пароли. Вроде и это говорили."
Как я уже сказал, никто не может получить дамп базы без предательства. А если оно есть - есть куда как более серьезнее, нежели дамп.
Поэтому, человек базу может получить только с доступом к ней - логин, пароль, имя базы. А в этом случае, он легко может изменить хэш пароля на нужный, войти, сделать дело, сменить обратно, уйти.
"По-моему, Вы начинаете именно занудствовать."
Нет.
"А нужно больше?"
Да, потому что лично я не считаю, что создатели одного сервиса должны себя нагружать сохранностью данных пользователя на других сервисах. Иначе говоря, я согласен, что эта причина реальна, но не для меня. А я хотел бы понять всю картину.
Повторю по занудствованию: чем мы меньше знаем, тем наивнее наши вопросы. И сейчас я на том этапе, на котором хочу получать подтверждения/опровержения своих мнений и своего стиля программирования. Собственно, это единственная причина, почему я создал эту тему. Ибо я хочу учиться, а не делать, как привык. И меня не устраивает "хэшировать надо". Я хочу четко понять причину, по которой это надо делать. Все названные причины, кроме "причины номер раз" я считаю неактуальными при правильном подходе к программированию, отображению ошибок и конфигурированию сервера. | |
|
|
|
|
|
|
|
для: Shorr Kan
(27.12.2007 в 20:47)
| | > Как я уже сказал, никто не может получить дамп базы без предательства
Ну это Вы зря. Например, на этом же форуме когда-то воровали пароли и заходили под чужими никами. Если бы хранились хеши (как уже сейчас), то как минимум узнать пароль бы уже не смогли. Никто никого не предавал, просто была уязвимость.
Я просто чувствую, что Вы хотите сказать "Ну напишу я без уязвимостей. Зачем мне Ваше хеширование?".
Уязвимость может быть у другого скрипта на этом же сайте, автор которого не Вы; могут с помощью трояна украсть Ваш пароль и слить базы. Да, тогда взломщики могут потереть весь сайт, но, вероятно, Вы его восстановите из backup'а, а вот базы вернуть не сможете. Они уже украдены. И после восстановления аккаунты будут под угрозой, если их владельцы не успеют сменить пароль.
Особенно будет больно, если проект очень важный. Это такой способ защиты на крайний случай.
Я тоже уверен в своих скриптах, но все равно храню в базе данных только хеши, но не сами пароли. Просто я, как правило, продаю свои скрипты. И обычно не Васе Пупкину с нулевой посещаемостью. Не хочется потом краснеть, если покупатель потом пострадает по моей вине. При чем сильно пострадает.
Безопасность - единственная причина. Если она Вам кажется недостаточной, то Ваше право хранить пароли, а не их хеши. | |
|
|
|
|
|
|
|
для: Unkind
(27.12.2007 в 21:28)
| | "Например, на этом же форуме когда-то воровали пароли"
Это потому что выводились ошибки. Я прекрасно помню то видео и я помню пароль нашего уважаемого Дизайнера ;)
Не выводим ошибки - половина проблем решена.
"Я просто чувствую, что Вы хотите сказать"
Почти. Я хочу сказать: "я считаю, что пишу так, что невозможно воспользоваться незахэшированными паролями. И если я неправ - я хочу понять это. Если же я прав - я хочу убедиться в этом".
"на этом же сайте, автор которого не Вы"
Не мой случай. Такого не бывает.
"могут с помощью трояна украсть Ваш пароль и слить базы"
Трояна где - на локальном компе?
Всё что ниже, до "Безопасность - единственная причина." - это высказывания, с убеждением, что взлом произошел. Я говорю о ситуации, когда взлома не может быть.
"Если она Вам кажется недостаточной, то Ваше право хранить пароли, а не их хеши."
Безопасность мне кажется очень достаточной причиной. Просто я хочу понять, почему хэши - безопасно. Я не считаю, что это (хэширование) решает даже долю проблем. Я могу ошибаться. Если так - объясните, если есть время. До сих пор я слышал только одно: "если украли - будет труднее...". Но я не вижу ни одной причины, почему могут украсть дамп базы без взлома сервера. А если произошел взлом сервера - да хоть обхэшируйся. | |
|
|
|
|
|
|
|
для: Shorr Kan
(27.12.2007 в 21:53)
| | > Это потому что выводились ошибки.
Какие еще ошибки? Вы считаете опеределить и воспользоваться уязвимостью без ошибок нельзя? Вы глубоко ошибаетесь.
> Я говорю о ситуации, когда взлома не может быть
В такой ситуации Вам ничего не грозит. | |
|
|
|
|
|
|
|
для: Unkind
(27.12.2007 в 22:13)
| | "Какие еще ошибки? Вы считаете опеределить и воспользоваться уязвимостью без ошибок нельзя? Вы глубоко ошибаетесь."
"В такой ситуации Вам ничего не грозит."
Я надеялся, что вы поняли, что я имел ввиду. | |
|
|
|
|
|
|
|
для: Shorr Kan
(28.12.2007 в 02:57)
| | Очень, очень печально, что Вы не поняли ничего. | |
|
|
|
|
|
|
|
для: Unkind
(28.12.2007 в 03:13)
| | Угу | |
|
|
|
|
|
|
|
для: Shorr Kan
(28.12.2007 в 05:30)
| | Кстати, вы правы вот в чем. Если ваши скрипты действительно не имеют дыр, то шифрование не нужно. Но такого, как показывает практика, не бывает. Возможно это не ваши, дыры, а хостинга, но уязвимость можно найти в подавляющем большинстве случаев. Т.е. защита скриптов - это как-бы первое кольцо обороны, а хэширование - это второе кольцо, на случай, если первое будет прорвано. Абсолютно неуязвимые скрипты бывают только теоретически, а практически - их пишут люди, а им свойственно ошибаться. Если бы был скажем абсолютно защищенный скрипт авторизации, то все только им бы и пользовались. Но такого нет, поэтому каждый изобретает какие-то свои ноу-хау для защиты и в каждом из них есть слабые места.
Если вы напишите неуязвимый сервис - решиться глобальная проблема, вы сможете его продавать за огромные деньги. Попробуйте... | |
|
|
|
|
|
|
|
для: Thrasher
(28.12.2007 в 10:09)
| | Понятно | |
|
|
|
|
|
|
|
для: Shorr Kan
(27.12.2007 в 20:47)
| | >Как я уже сказал, никто не может получить дамп базы без предательства
Чтобы получить один пароль (или хеш) совсем необязательно иметь весь дамп.
>Да, потому что лично я не считаю, что создатели одного сервиса должны себя нагружать сохранностью данных пользователя на других сервисах.
Создатели сервиса должны нагружать себя ответственностью за личные данные пользователя.
(Это кстати, по-моему, уже согласно закона. )
Так вот, пароль - это личные данные.
И самый лучший способ его не выдать - вообще его не знать.
Одним из подходов к этому незнанию является применение хешей.
Хотя простое md5(password) , конечно, позволит достичь немногого. | |
|
|
|
|
|
|
|
для: Trianon
(27.12.2007 в 22:46)
| | "Чтобы получить один пароль (или хеш) совсем необязательно иметь весь дамп. "
Так может быть, вы знаете примеры, как получали пароль? Без учета копания в мусорке или заглядывания через плечо. А так же, без учета использования простых уязвимостей и недосмотров скрипта.
"лучший способ его не выдать - вообще его не знать"
Это верно, но всё же это несовсем то, что я пытаюсь понять. Если не говорить о законе, не говорить о благоразумии и спокойствии - в чем именно заключается опасность незахэшированных паролей? Давайте отбросим такие факторы, как взлом через соседей по серверу или через ошибки в самом сервере (это неинтересно), а так же не будем учитывать соц.инженерию и mysql-injection . Вывод ошибок отключен (то есть взломщик не будет видеть, где там какая ошибка). Всё что вводится - экранируется и/или срезается (плохие символы). Всё что выводится - htmlspecialchars.
Где узкие места в этом случае? | |
|
|
|
|
|
|
|
для: Shorr Kan
(28.12.2007 в 02:57)
| | >Где узкие места в этом случае?
В заднице у админа - если туда засунуть паяльник, то пароли от неприступного хостинга будут известны меньше чем через минуту.
Вот вам встречный вопрос для размышления: если в банковских хранилищах такие толстые двери, то зачем там охрана и сигнализация?
Если сможете ответить на него, то и вопрос с хэшами, скорее всего, прояснится. | |
|
|
|
|
|
|
|
для: Loki
(28.12.2007 в 10:54)
| | Немного неточный пример - толстые стены можно взять методичным соскребыванием. Со скриптами такого не бывает. Передача чего-то не того - бывает. Перехват пакетов - бывает. Это сравнение разных категорий, аналогия совсем не годится. Но суть я понял. Не понял я лишь одного - засунули ему паяльник... так ведь это рут-доступ на сервер... а тут уже всё - в том числе и запись введенного в формы в логи. Хэширование тут как-то в стороне остается. | |
|
|
|
|
|
|
|
для: Shorr Kan
(28.12.2007 в 19:20)
| | почему сразу паяльник?
А если не паяльник?
А если просто подождали, пока человек отлить отошел?
И время было на один единственный селект с его терминала?
Вы понятия не имеете какие будут атаки, на какие точки, и какой силы.
И никогда не будете иметь.
Не лично Вы, а любой админ.
И поэтому единственно правильный подход в защите - усиливать всё звенья, а не одно два.
Да и с паяльником, не всегда нарвешься на того кто знает именно рут-пароль. | |
|
|
|
|
|
|
|
для: Trianon
(29.12.2007 в 04:13)
| | Теперь ясно | |
|
|
|
|
|
|
|
для: Shorr Kan
(27.12.2007 в 15:14)
| | >каким образом он загрузит php-shell ?
А это может быть не ваш скрипт, а соседний - нет возможности контролировать все скрипты, которые устанавливаются на сайт (по крайней мере такая возможность редко бывает). | |
|
|
|
|
|
|
|
для: cheops
(28.12.2007 в 11:56)
| | Тогда понятно | |
|
|
|