Авторизация без пароля?

24 Дек
2011

Вы когда нибудь видели сайт на котором форма авторизации поьзователя состоит из одного поля для заполнения? Я нет! А вы? Вот какая задумка у меня появилась: а что если у каждого пользователя не будет пароля и доступ к аккаунту он будет получать введя только свой уникальный десяти-симвоьный сложный код. Я создал для себя свою собственную систему управления сайтом. Я не брал в заготовку другие cms, но сделал что сумел. Авторизация на сайте была простая, она состояла только из одного поля для ввода кода и кнопки подтверждения.

image
Каждые две недели пользователю отсылается новый код автоизации для усиления безопасности. При утере кода высылается новый сгенерированый код. Регистрация происходит так: пользователь вводит только свой email и кликает по кнопке «зарегистрироваться». Скрипт проверяет заполнено ли поле для email и нажата ли кнопка «зарегистрироваться». После успешной проверки заглядываем в базу и смотрим не ту ли там такого email, если нет то, идём дальше. Теперь нам предстоит сгенирировать код для пользователя и зашифровать его для базы данных. Генирируем код проверяем его на уникальность и отправляем его пользователю по завершению регистрации. Теперь нам надо зашифровать код, делаем это так: берём дату и время нажатия кнопки «зарегистрироваться» и всё это складываем и затем шифруем, делаем хаотичный набор символов и цифр (например: №2;%:7*%45!»№\»‘,9@!&.’56\|}{:;45+_()}). Прибавляем этот набор к нашему хешу. Затем к всему этому прибавляем зашифрованый email и сгенирированный код. И опять всё это шифрум с помощью sha1(). Поле для регистрации:

image

Для дополнительного усиления я написал функцию которая «запутывает» хеш-код. Пример: если в коде есть & то заменяем его на %, несколько примеров: № замена на (; если есть 9 и 8 уменьшаем их на 3; 2, 6, 4 делим на 2 и прибавляем 7; ну и так далее; Шифрированый код заносим в базу данных. На этапе регистрации только один раз код был в открытом виде. Процесс авторизации немного легче. Пользователь вводит свой код и нажимает кнопку «Авторизоваться». Скрипт проверяет заполнено ли поле и нажата ли кнопка «Авторизоваться», если да то, он шифрует код по заданному нами алгоритму беря из базы данные и сравнивает их. Я если они одинаковы то доступ открыт! Вроде всё что я реализовал… Ещё есть задумки: если например пользователь ошибся в вводе кода больше четырёх раз то на почту приходит временный ключ проверки, теперь пользователь должен ввести и правильный код и временный ключ(такая техника есть в Steam, но там сразу отсылается временный ключ). Ещё система нуждается во многих дополнениях. Строго не судите, мне 16 лет и всё ещё впереди 🙂
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх