Я использую nXhtml для emacs. Цитирование со страницы
Одной из основных частей nXhtml является nxhtml-mode, основной режим GNU Emacs, основанный на nxml-режиме. Он знает о синтаксисе XHTML и может проверять это по мере ввода. Он также может сказать вам, какие теги и атрибуты вы можете использовать в определенный момент, и поможет вам вставить их.
Эта функция, которую мы называем завершением, является одной из основных функций этого режима. Еще одной важной особенностью является возможность смешивать несколько языков в одном буфере и получать правильную подсветку синтаксиса и отступы для каждого из них.
Если вы храните только хеш пароля, то нет. ... и в любом случае вам следует хранить только хеш-код их паролей с надлежащей солью.
Механизмы сброса пароля - подходящая альтернатива.
Хешированные пароли не могут быть получены в целом (это зависит от функции хеширования, безопасные хэши не могут быть получены). Если у них один и тот же хэш на двух сайтах, у них может быть один и тот же пароль, это зависит от хеш-соли, используемой сайтами, от метода и т. Д.
Если ваш пароль надежно хранится в хорошей хэш-системе, провайдер должен никогда не сможете отправить вам свой пароль по электронной почте, вы должны сбросить его, если забудете его.
In short, no. With most hashing algorithms, you can have multiple inputs with the same output. It is often better to offer a password reset option.
Существуют различные типы алгоритмов хеширования. Некоторые из них более безопасны, чем другие. MD5 - популярный, но небезопасный. Семейство SHA - еще один более безопасный набор алгоритмов.
По определению, хеш - это односторонняя функция. Это не может быть отменено.
Если бы существовал простой способ восстановить пароль в виде открытого текста, не было бы никакого смысла в хешировании паролей для начала. В этот момент вы можете просто использовать base64 или ROT13. (не делайте этого!)
Как уже упоминалось, используйте другие методы восстановления пароля. На самом деле никогда не бывает веских причин для доступа к паролям в открытом виде.
Если хеш-коды на двух сайтах одинаковы, пользователь, скорее всего, имеет одинаковый пароль на обоих. Однако не на 100% гарантировано, что может произойти конфликт хеширования, но это крайне маловероятно.
Невозможно отменить часто используемые хэши. Они могут быть подвергнуты грубой силе (перебор всех возможных паролей) или вы можете использовать список слов (с использованием списка часто используемых паролей) в сочетании с грубой силой, чтобы немного ускорить его, но это все еще очень медленный и интенсивный процесс. 1289] Лучший способ, который используют многие сайты, - это создать кнопку «Сброс пароля», где вы вводите свое имя пользователя и адрес электронной почты, и если они совпадают,
Общая идея хранения хэша пароля заключается в обеспечении безопасности паролей ... даже от тех, кто имеет доступ к базе данных. Доверие никогда не бывает безоговорочным. Хэш - это односторонний алгоритм, поэтому невозможно получить исходный пароль из хэш-кода. Обычно, когда пользователю необходимо восстановить свой пароль, который был сохранен в виде хэша, вы должны задать ему секретный вопрос и либо отправить им временный пароль по электронной почте, либо отправить им временную ссылку, по которой они могут изменить свой пароль. Это гарантирует, что пароль никогда не будет храниться в открытом виде и будет защищен от посторонних глаз, даже тех, кому можно доверять.
Для этого у вас должна быть модель с полями:
Hashed_password
Salt
И вам нужно знать пользователя метода для хеширования пароля (здесь я использую SHA1) Затем вы можете определить в своем контроллере:
def self.encrypted_password(password, salt)
string_to_hash = password + "wibble" + salt
Digest::SHA1.hexdigest(string_to_hash)
end
Затем вы можете сравнить:
user.Hashed_password == encrypted_password(password, user.salt)
Истина означает, что «пароль» - это пароль для пользователя «пользователь»