PHP в деталях


         

в базе поле логина, естественно,


Входной скрипт проверяет логин и пароль и выдает две куки. В первой ? логин, чтобы сразу опознать пользователя ( в базе поле логина, естественно, уникальное или даже ключевое). Во второй куке ? хэш от времени входа и пароля (для полноты конспирации я добавляю к этим строкам букву "Ы" ? тогда хэш подобрать почти невозможно :).

Все остальные программы подключают код, который делает следующее. Делает запрос в базу ? выбирает строку с полученным логином. Из этой строки берет поле "log_time" и пароль и делает из них, как и описано выше, хэш. Сравнивает его с тем, что получил, и если они совпадают, выдает новую куку хэша, опять же, от пароля, времени и буквы "Ы" и делает запрос в базу данных "UPDATE user SET log_time='...' WHERE login='$cookie_login'".

if (isset($HTTP_COOKIE_VARS[$cookie_login]) && isset($HTTP_COOKIE_VARS[$cookie_code])) {

  $login = $HTTP_COOKIE_VARS[$cookie_login];

  $code  = $HTTP_COOKIE_VARS[$cookie_code];

  $result = mysql_query("SELECT date_format(log_date,'%Y%m%d%H%i%s') as log_date1, pass, uid FROM user WHERE email='$login' AND log_date>'DATE_SUB(NOW(),INTERVAL 15 MINUTE)'");

  if (!mysql_error() && @mysql_num_rows($result)==1) {

    $log_time0 = time();

    $log_time1 = date("YmdHis", $log_time0);

    $log_time2 = date("Y-m-d H:i:s", $log_time0);

    $current_user = mysql_fetch_array($result);

    if (md5($current_user["pass"].$current_user["log_date1"].$md5letter) == $code) {

      mysql_query("UPDATE user SET log_date='$log_time2' WHERE uid=". $current_user["uid"]);

      setcookie($cookie_code, md5($current_user["pass"].$log_time1.$md5letter), time()+900, $site_path);

      $auth = true;

      }

    else

      unset($current_user);

    };

  };

Опять же, здесь нет никакой защиты от подбора и атаки на сервер (кстати, здесь можно вместо буквы "Ы" писать IP-адрес пользователя ? чтобы, например, соседу по офису нельзя было взять файл с кукой и зайти со своего компьютера).

Это всё, что я хотел сказать сегодня. Защита от подбора и сессии ? на следующей неделе.




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