Как я могу зашифровать данные пароля в базе данных с помощью PHP?

Это может быть невозможно. Синтаксис таблицы - это нестандартная функция уценки. Это не в официальных правилах, но поддерживается многими реализациями. Конечно, учитывая отсутствие официальных правил, каждая реализация работает немного по-своему.

Тем не менее, некоторые из наиболее популярных реализаций довольно согласуются с незначительными изменениями в их поведении. Чтобы назвать несколько, PHP Markdown Extra , GitHub Flavored Markdown , расширение таблицы для Python-Markdown 1 sup> и Pandoc's [ 114] конвейерные таблицы все требуют строки заголовка. Другими словами, вы не можете иметь только одну строку.

Фактически, таблица, которую автоматически генерирует визуальный редактор gitbook, на самом деле является многорядной таблицей. Полный синтаксис таблицы будет следующим:

| Windows | Linux x32 | Linux x64 | Mac x64 |
| :------ | :-------- | :-------- | :------ |
|                                           |

Обратите внимание, что первые две строки состоят из заголовка таблицы, а третья строка является пустой ячейкой. Вы обнаружите, что не все реализации автоматически добавят третью (пустую) строку. Те, которые не будут даже распознавать однорядную версию как таблицу вообще. Другими словами, для большинства реализаций это таблица абсолютного минимума, которую вы можете создать.

1 sup> Полное раскрытие: я разработчик для Python-Markdown.

11
задан Eddie 28 February 2009 в 23:56
поделиться

9 ответов

Из обзора высокого уровня - не шифруют, хеш. И если Вы можете, использовать BCrypt. Вот длинная статья, объясняющая почему BCrypt и почему хеширование.

10
ответ дан 3 December 2019 в 05:36
поделиться

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

Действительное решение состоит в том, чтобы хешировать, посолить и затем сохранить пароли. У Jeff Atwood есть потрясающее сообщение на этом: http://www.codinghorror.com/blog/archives/000953.html

И вот является одно обсуждение "таблицами радуги", крупными таблицами слов с их суммами MD5: http://www.codinghorror.com/blog/archives/000949.html

6
ответ дан 3 December 2019 в 05:36
поделиться

Лучший способ, которым это и легко и безопасно, состоит в том, чтобы использовать phpass. Если Ваша установка PHP делает Шифр, она использует bcrypt; если это не делает, это использует несколько передач md5. Так или иначе это более безопасно, чем прямой md5 или sha1.

$hasher = new PasswordHash(8, false);

// Before storing a password
$hash = $hasher->HashPassword($password);

// To check a password against a hash
if ($hasher->CheckPassword($password, $hash))
    // $password and $hash match
2
ответ дан 3 December 2019 в 05:36
поделиться

Я всегда md5sum пароли, прежде чем я поместил их в базу данных, и затем также md5sum вход в систему пароля, пытаюсь проверить их по дб. Только для безопасности, я делаю запрос Select с помощью, где пункт с идентификатором пользователя (имя пользователя) И md5summed пароль так, чтобы я не возвращал строк вообще если оба соответствия.

Кроме того, mysql внутренне использует md5summing на, он - пароли при необходимости в уровне доверия в этом методе путаницы пароля.

1
ответ дан 3 December 2019 в 05:36
поделиться

Это могло бы быть несколько полезно также: каково различие между SHA и MD5 (в PHP)?

0
ответ дан 3 December 2019 в 05:36
поделиться

Никогда не храните пароли. Используйте односторонний хэш и хранилище это.

1
ответ дан 3 December 2019 в 05:36
поделиться

Используйте хеш-функцию; MD5 сделает прекрасный. Не храните пароль, храните хеш. Затем для входа пользователей в хешируйте пароль, который они ввели, и сравните его с хешем в базе данных; если хеши соответствуют, они законны.

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

1
ответ дан 3 December 2019 в 05:36
поделиться

хм, я хеширую, несколько раз на основе любой математики приходит на ум во время записи хранения и проверки паролей

Отсюда на я, вероятно, пойду с OpenID как можно больше везде, где у меня есть фактический выбор tho, таким образом, я не должен делать никакого устройства хранения данных пароля вообще. Тем путем я могу оставить пароли до экспертов, и пользователи уже доверяли стороне.

0
ответ дан 3 December 2019 в 05:36
поделиться

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

0
ответ дан 3 December 2019 в 05:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: