Можно ли выполнить проверку «пароля» без обновления окна? - PullRequest
1 голос
/ 27 октября 2010

Я сделал простое веб-приложение, в котором многое делается без обновления окна.Теперь я столкнулся с проблемой, которую раньше не осознавал.Если я не найду решение, мне придется перепроектировать приложение целиком, что займет много времени и, возможно, убьет некоторую крутость его использования.Уч.Хорошо, вернемся к проблеме.

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

В настоящее время я использую базу данных mysql - подключаюсь к ней, читаюпароль в PHP и сохранить его в глобальной переменной javascript.Но это, конечно, читается после ввода источника.

Возможно ли сделать такую ​​вещь?Можно ли тайно проверить пароль, не обновляя сайт и не проверяя его с помощью PHP?

Ответы [ 3 ]

6 голосов
/ 27 октября 2010

Я рекомендую вам спросить перед внедрением. Слишком мало людей, кажется, делают это в наши дни.

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

Во-вторых, вы захотите использовать Ajax-запрос, чтобы выполнить эту проверку для вас в Javascript. Для этого я предпочитаю использовать библиотеку JQuery , поскольку она предоставляет действительно хорошую, кросс-платформенную, протестированную, простую в использовании оболочку над Javascript, которая делает подобные вещи легко.

1 голос
/ 27 октября 2010

Я реализовал одно такое приложение в Python и применил следующий подход
1) Выполните однократную аутентификацию, отправив запрос на отправку сообщения ajax на сервер. Вы можете использовать библиотеку (jquery, dojo и др.) Или простой javascript, я выбрал последний.
2) При успешной аутентификации используйте библиотеку uuid для генерации случайного уникального идентификатора, назовем его идентификатором сеанса. Php имеет следующую библиотеку uniqid , которая должна сделать это за вас
3) Сохраните этот идентификатор сессии в файле cookie и / или в переменной
4) Сохраните идентификатор сеанса и идентификатор пользователя в memcache или в базе данных, чтобы проверить, активен ли сеанс.

Я понимаю, что в php есть встроенный механизм обработки сеансов , поэтому шаг 2 будет изменен, и тяжелая работа с 3 и 4 сделана для вас.

1 голос
/ 27 октября 2010

Вы можете закодировать пароль с помощью MD5 или SHA1, давая вам строку из 32 или 40 случайных символов. Эта строка очень сложная (не невозможна), чтобы вернуться к исходному паролю.

MD5 и SHA1 имеют свойство, заключающееся в том, что данное значение всегда будет приводить к одному и тому же хеш-значению. Например. если вы хешируете «stackoverflow» в 123ABC и делаете это снова на другой машине, эта машина также выдаст 123ABC.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...