![]() |
Система авторизации на Javascript
Посвящается:Тем кто кричит на каждом углу, что на javascript нельзя
ничего нормального написать и начинающим экзотико-дизигнерам. Интро:Как нас учили еще в 5-м классе - javascript исполняется на стороне клиента, следовательно мы не можем хранить никаких секретных данных. Жалкие попытки хранить пары login:pass в файлике pass.js, который инклудится в нашу страницу, выкиньте из головы сразу. Тут нас спасет молодая, но уже сильная наука криптография. Сразу оговорюсь что приведенные здесь скрипты - не очень криптоустойчывы(ибо не об этом речь). Наша задача: написать скрипт, который допускал только "избранных" в закрытый раздел. Мы могли бы дать закрытому разделу имя вроде "O4en_secre7nii_razzdel", но если "обиженный" мембер расскажет всем магическое имя сикрет-раздела или другим способом произойдет утечка информации, то необходимо будет придумывать новое имя разздела, НО САМОЕ ГЛАВНОЕ - НЕОБХОДИМО ОПОВЕЩАТЬ ЛЕГАЛЬНЫХ ПОЛЬЗОВАТЕЛЕЙ о новом имени, что очень неудобно. Что ж попробуем написать скрипт авторизации, который будет совершенно прозрачен для пользователя. Начало:Как уже упоминалось, javascript - выполняется на стороне клиента, следовательно необходимую страницу(закрытый раздел) мы отошлем клиенту но в зашифрованной форме=) и выводить будем так: document.write(pos), где pos="Зашифрованный текст"XOR"ключ". Зашифрованный текст - можем смело передавать пользователю(его устойчивость обусловится криптоустойчивостью вашей хеш-функции), а вот ключ будем генерить от пользовательского логина и пароля с помощью хеш-функции. НО!снова на сцену выходит проблема "обиженного пользователя", т.е. он может запомнить свой ключ и выложить его в паблик, следовательно при удалении пользователя или утечке информации мы будем менять все ключи(всех пользователей за исключением обиженного) и шифрованный текст. Теперь собственно код: Код:
<html>Код:
<html>админке "key", сгенерить заново хеши пользователей(автоматизац ю здесь не писал) и сгенерить шифротекст. Таким образом "обиженный пльзователь" не сможет использовать старый логин и пароль или гамму, а остальным пользователям не нужно менять свои пары логин:пароль. Ауттро:Данный скрипт не рекомендуется к использованию. Суть чтива показать, что используя элементы криптографии, мы написали прозрачную для пользователя систему авторизации на javascript. P.S.Для тех кто сразу не понял:соль в том что, пользователям выдается значение хеша, зависящего от логина, пароля и гаммы(необходимой для расшифрования). причем этот хеш мы можем сменить так, что пользователям не надо менять логин:пароль. P.S.S.Форум немного исказил текст исходников. |
В принципе все правильно.. Натолкнуло даже на кое-какие идеи. Спасибо за статью...
|
Кто-то уже приводил кусок кода (с просьбой расшифровать). Там тоже проверка на контрольную сумму (типа проверка на хэш), и если все ок, то уже переход на страницу www.cайт.ru/логин/пароль/index.html
Только всегда проблема, что страницы после авторизации занесут в избранное. Даже если предателя удалят (его страницы логин/пароль), то на JS полноценно сделать проверку - имеет он право смотреть или нет - нельзя. А если можно - нафиг JS? |
Цитата:
|
| Время: 19:43 |