1

Я использую функцию PHP 5.5+ password_hash() для хэширования моих паролей перед хранением в базе данных. Все идет нормально.Password_hash() необходимо предварительно хешировать перед отправкой?

Чего я немного не уверен в необходимости предварительной передачи пароля, который он отправил из формы, в мой PHP-скрипт.

Теперь форма представить процедуру, (в короткие сроки), как это сделано:

  1. HTML-файл, который содержит форму вызывает скрипт контроллера в методе формы = «..» ->
  2. скрипт
  3. Controller получает вызов и выбирает правильную функцию ->
  4. выполнение функции и хранение в базу данных.

Таким образом, в основном вызов отправляется через три файла из представления на хранение.

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

Должен ли я беспокоиться и каким-то образом хешировать пароль с помощью JavaScript во время первоначальной подачи формы или это безопасно? Конечный сайт, скорее всего, будет использовать SSL-сертификат, но все же я не уверен на 100%, если я в безопасности или нет.

+2

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

+0

Все скрипты PHP выполняются в один экземпляр интерпретатора. Не-проблема в основном заключается в том, как PHP читает данные формы/POST; если * был * файл атташе, создается временный файл (маловероятно для большинства форм входа). Вы, вероятно, спрашиваете о том, что неподписанный пароль передается через HTTP? Это разрешимо только для TLS. – mario

+0

Я пойду с решением, которое у меня есть сегодня, и надеюсь на лучшее. Спасибо за ваше время. – Markus

ответ

2

Ваших опасений по поводу угона пароля между контроллерами излишни:

Для злоумышленника угнать пароль, пока он прошел между различными контроллерами, будет означать, что злоумышленник должен быть в состоянии прочитать память процесса PHP, что потребует привилегий root. Если у злоумышленника есть привилегии root, у вас больше проблемы, и ваше решение не спасет вас, потому что тот же самый злоумышленник может также изменить файлы PHP, чтобы удалить вашу «защиту».

Что касается захвата пароля во время его пролета через Интернет, единственным решением является использование HTTPS - любая криптография/хэширование Javascript, которую вы делаете, бессмысленно, поскольку перехватчик также может изменять страницу во время ее передачи и обслуживать измененная версия без дополнительной «безопасности», которую вы добавили; Есть много вопросов о попытке обеспечить регистрационную форму без HTTPS на Security.SE, проверьте их:

+0

вопрос о первом шаге, когда пароль отправлен. Это простой текст, если не используется SSL. –

+1

@kasperTaeymans - если пароль отправлен на веб-сервер по SSL-соединению, то он не отправляется в виде открытого текста –

+0

Я не говорю, что вам не нужно использовать SSL. Мой комментарий к этому ответу состоял в том, чтобы поддержать мой downvote. –

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