Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > нужно ли использовать md5 для хранения пароля?


Автор: begin 9.10.2007, 16:03
Пишу админку для сайта, на котором нет регистрации пользователей. Соответственно пользователь будет всего один - админ. Поэтому хочу хранить его логин и пароль не в базе, а непосредственно в скрипте.
Сначала хотел там хранить не голый пароль, а его md5-хэш. Но тут на глаза попал конфиг-файл для подключения к базе - там пароль лежит в обычном виде.
Насколько я понимаю, инклюдить файл с другого сервера будет проблематично по следующим причинам: 1. никто не знает название конфиг-файла и путь к нему 2. в этом файле может быть проверка константы, имя которой опять же неизвестно.

В свете этого, два вопроса:

можно ли хранить пароль админа прямо в скрипте или в подлючаемом скрипте, в которых происходит аутентификация при входе в админку?

можно ли не использовать шифрование пароля?

Автор: Fally 9.10.2007, 16:14
Цитата

Но тут на глаза попал конфиг-файл для подключения к базе - там пароль лежит в обычном виде.

Лежит то он зашифрованный, но варинтов прочесть его нету + редко на каком сервере к БД открыт доступ к БД из инета.
Ответы:
1) Нет, не стоит. Со временем, вдруг админов станет несколько? Для хранения используй БД.
2) Можно, если тебе плевать на безопасность своего сайта. Шифрование _желательно_ использовать всегда.

P.S. Не выделяйте вопросы красным цветом, о том что это вопрос говорит и вопросительный знак. 

Автор: begin 9.10.2007, 16:35
Цитата(Fally @ 9.10.2007,  16:14)
Лежит то он зашифрованный, но варинтов прочесть его нету + редко на каком сервере к БД открыт доступ к БД из инета.

Я имел ввиду, что незашифрованным лежит ПАРОЛЬ для подключения к базе. Ведь обычно все параметры подключения к базе хранятся в пхп-файле, который просто инклюдится остальными скриптами. А шифровать его нельзя - ведь для подлкючения к базе в функции mysql_connect($db_server, $db_user, $db_pas) нужно указать пароль в нормальном виде.
Пароль и логин к базе ведь тоже очень важны? С ними ведь можно натворить бед не меньше, чем с доступом к админке сайта?
Так если уж их приходится ложить открытыми, то почему нельзя положить открытым и пароль админки?

Мне не лень использовать шифрование, я просто пытаюсь понять с вашей помощью, действительно ли оно нужно..

P.S. Админ однозначно будет всегда один!

Автор: Fally 9.10.2007, 16:55
То, что пароль к БД лежит в не зашифрованном виде, ещё ничего не значит, т.к.:
1) чтоб его увидеть надо вывести переменную его хранящую на экран. Для этого надо скрипт редактировать.
2) Я не видел серверов к БД, в которых была бы открыта возможность подключаться к серверу из интернета я не видел. Подключение по локальной сети ещё возможно или с определённых IP, но такого, чтобы любой желающий мог подключиться к серверу, я ещё не видел.

И вообще, ознакомьтесь с документацией и книгами, там всё прекрасно расписано + есть яндекс и гугл.

Автор: chin 9.10.2007, 17:22
Если злоумышленник каким-то образом прочитает содержимое конфигурационного файла с паролем администратора закриптованного в md5, он никак не сможет им воспользоваться. А открытым паролем к БД он не сможет воспользоваться по причине, изложенной Fally.

Автор: begin 9.10.2007, 17:42
Вот теперь я понял всю важность шифрования пароля.
Но возникла маленькая проблемка с генерацией пароля:
есть скрипт, где в поле я ввожу пароль:
Код

<?php
?>
<form action='md5.php' method='post' name='q'>
<input type='text' name='pass' value='' cols='20'>
<br>
<input type='submit' name='w' value='послать'>
</form>
<?php
?>

и есть скрипт, выводящий для него хэш:
Код

<?php
echo md5($_POST['pass']);
?>

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

Автор: SelenIT 9.10.2007, 18:00
Цитата(begin @  9.10.2007,  17:42 Найти цитируемый пост)
всегда выводится один и тот же хэш

Не такой случайно: d41d8cd98f00b204e9800998ecf8427e? ;)

begin, а просто $_POST['pass'] что выводит? Возможно, где-то просто досадная опечатка. Ну и маловероятно, но все же... какая версия PHP?

Автор: console 9.10.2007, 18:25
begin, сделай print_r($_POST) чтобы посмотреть, что передается то вообще... и 
Цитата(chin @  9.10.2007,  16:22 Найти цитируемый пост)
Если злоумышленник каким-то образом прочитает содержимое конфигурационного файла с паролем администратора закриптованного в md5, он никак не сможет им воспользоваться.
 воспользоваться не сможет напрямую, однако есть такая вещь как John The Ripper, словари и брутфорс. Если пасс будет наподобие - happy, то вскрывается за пару сек.

Добавлено через 1 минуту и 3 секунды
приведи код обработчика - md5.php

Автор: begin 9.10.2007, 19:41
console:
md5.php
Код

<?php
echo md5($_POST['pass']);
?>

selenit:
Код

95daabbe2c45278d0a3a473b8666ee8c

версия php: 4.4.7
версия моей внимательности: крайне низка  smile 

уже нашел опечатку. зря отнял время

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)