Другие языки программирования и технологии

Дайте ===подробный=== алгоритм авторизации на сайте

к примеру
1 Подключаемся к базе

2 Проверяем нажатие Input

....

и тд заранее спасибо
можно в базе создать хранимую процедуру или функцию, куда передаются логин и пароль в качестве параметров и возвращающие битовое значение, 0 - неудачно, 1 удачно :)
пароль лучше хранить в виде хеша, например md5 (его нельзя расшифровать, можно только аналогичный сгенерировать) , а передавать в базу можно прямым текстом и в коде хп/функции конвертировать в хеш md5 и дальше уже сравнивать хеш сгенерированный с тем, что лежит в базе
и если хеши совпадают, то возвращать 1, если нет, то 0 :)
ну и тогда обработка события нажатия кнопки входа тогда упрощается, т. к. при 1 переход на ту страницу, которая нужна, или вывод сообщения о неудачной авторизации с редиректом на страницу ввода логина и пароля :)
и передача логина и пароля в хранимую процедуру надо делать отсекая пробелы в начале и конце параметров т. е. типа ltrim(rtrim(login)) и особенно с паролем, т. к. если лишний символ в пароле приведет к тому, что хеш выйдет другой :)
и страница авторизации не должна кешироваться, а ttl сессии должна отличаться от остальных страниц и должно быть минимальным :)
я так сам писал и так правильно с точки зрения безопасности :)
СЦ
Сергей Цветков
35 569
Лучший ответ
То что написал Дмитрий Кораблин верно.
Но в последнее время появились огромные радужные таблица (таблица с кучей возможных паролей и хэшей к ним) . Например радужная таблица со всеми вариантами пароля из 6 символов (все латинские буквы и цифры) занимает 2 ТБ, что не много.
Поэтому применяют соль. Это случайный набор символов, который добавляется к паролю перед хешированием. Саму соль можно хранить рядом с захешированным паролем. (так делают все современные CMS).
А так же если логин следуют фильтровать (иначе возможна SQL инъекция) . Почитать об этом можно в интернете