Сайтостроительство


         

Аутентификация, идентификация и несанкционированный доступ - часть 2


Есть несколько вариантов:

  1. таскать логин и пароль через все скрипты
  2. записать логин и пароль в cookie
  3. сгенерировать ключ и таскать его

Первый способ неудобен тем, что в системе могут быть HTML-страницы, которым можно передать параметры только методом GET, например, http://inforg.ru/main.html?login=1&pwd=fssdf. И ваш логин и пароль будут закэшированы. Убрать все html-страницы в CGI-скрипты и работать только методом POST неразумно, т.к. вы искусственно затормаживаете работу сервера. Как правило, первый способ никогда не применяется. Наиболее распространены второй и третий способ. Во втором и третьем способе логин и пароль передаются только один раза, а cookie и ключ генерируются на определенное время. Cookie, как вы помните, это параметры с определенным сроком жизни, которые хранятся на стороне клиента. Ключ - это тоже самое, только на стороне сервера. Cookie имеют два принципиальных недостатка. Во-первых, они могут быть либо отключены, либо просто не поддерживаться броузером. Кстати, была информация, что в Европе какой-то суд вообще постановил, что данная технология незаконна, т.к. производит запись на компьютер пользователя без его согласия. Во-вторых, пользователь может работать на чужом компьютере или в интернет-салоне и тем самым есть риск, что после него кто-нибудь войдет в систему с этого компьютера. Cookie можно устанавливать только на персональный компьютер пользователя, при условии, что он точно уверен, что к компьютеру не имеют доступа злоумышленники. Третий вариант, самый правильный и распространенный. После ввода логина и пароля вы генерируете на сервере ключ с определенным сроком действия. И далее от скрипта к скрипту или HTML-документу у вас таскается строка типа url?key=H13282i3hsk839bkjbBYasd. Каждый скрипт, получая ключ, по ключу получает логин и пароль пользователя на сервере. Такая система аутентификации используется в нашей тестовой системе - .

Для поддержки данного механизма в библиотеке имеется две функции:

int GetLoginPwd(MYSQL* pDB, const char* key, LString *login, LString *pwd);




Содержание  Назад  Вперед