2014-02-04 2 views
0

Предположим, у вас есть простая страница с требованием пароля, вы отправляете эту страницу по электронной почте другу с паролем, чтобы они могли просматривать скрытую информацию внутри.Простая страница пароля PHP - зачем шифровать?

Неужели это небезопасно и почему?

$password = htmlentities($_POST["password"]); 
echo ($password == "hello123" && strlen($password) <= 10) 
? "secret information" : "incorrect password"; 

Какая возможная атака может кто-то снять? Я думаю, что они попытаются вырваться из запроса? Как безопасно шифровать пароль на странице (SHA1)?

+0

Hashed - * not * encrypted - пароли являются стандартной процедурой для предотвращения разоблачения пользовательских паролей * если * база данных, содержащая пароль, скомпрометирована. Если вам неинтересно, что этот пароль подвергается воздействию, если ваш код подвергается воздействию, тогда вы в порядке. Учитывая, что ваш сервер будет скомпрометирован в этой ситуации, вы довольно ввернуты, несмотря на то, что ... – Charles

+1

для чего-то такого простого, аутентификация Apache идеальна –

+0

Так что позвольте мне понять это прямо. Даже если вы решили сохранить пароль в базе данных mySQL, вам придется взломать сервер и расшифровать. –

ответ

0

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

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

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

+0

Отличный ответ, спасибо. –

0

Нет запроса. Для такой простой страницы нет причин защищать ее дальше, потому что хакеру придется обращаться к файловой системе вашего сервера, чтобы найти пароль.

0

Простой хэш (например, sha1) можно атаковать с помощью> 1 миллиарда попыток в секунду 15-летними злоумышленниками с подсказкой и карточкой gfx игрока (если атакующий получает хэш и пытается найти пароль открытого текста, например, после найти какой-то способ прочитать хэш из того, что вы его храните).

это даже верно, если вы добавляете соль к хешу.

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

указание на то, что код пароля, может быть, хорошо и достаточно современен, когда он использует такие вещи, как pbkdf2, bcrypt, scrypt, sha512-crypt.

Смежные вопросы