Привет всем! Наслушавшись всяких ужасов про неправильную организацию аутентификации пользвателя на сайте + просмотрев по разным форумам все различные самопальные классы, в которых писатели с даром обгаживали чужие творения и с неменьшим жаром защищали свои, решил посветоваться как же более менее грамотно защититься от кражи сессии подмены, отравления и прочее. Ниже я прикладываю простетский свой код, на примере которого, надеюсь, тем, кому не лень будет объяснить или указать на ошибки, можно будет потыкать меня носом ) Спасибо заранее
итак:
| Код | // кнопка "Проверка логина-паролья" нажата if(isset($_POST["CheckMe"])) { $res = mysqli_query($connect_to_base, " SELECT * FROM register_users WHERE user_login = '".$_POST["UserLogin"]."' AND user_password = '".md5($_POST["UserPassword"])."' " ); // Связка "Логин" - "Пароль" существует в базе if(mysqli_num_rows($res) == 1) { while($e = mysqli_fetch_array($res)) { // Юзер не забанен if($e["user_ban"] == 0 and $e["user_confirmed"] == 1) { // user_uin - это поле в таблице базы, в котором хранится некий uin нашего пользователя, который формируется при регистрации $_SESSION["UserSession"] = $e["user_uin"];
mysqli_query( $connect_to_base, " UPDATE register_users SET user_ip = '".get_user_ip()."', user_last_enter = '".CurrDate()."' WHERE user_id = '".$_SESSION["own_user_id"]."' " );
echo "Привет, старй знакомый"; }
// Не забанен, но не подтвердил elseif($e["user_ban"] == 0 and $e["user_confirmed"] == 0) { echo "Вы не подтвердили свою регистрацию переходом по ссылке высланной вам по e-mail"; }
// Забанен else { echo "Зпрещен доступ"; } } } // Неправильный логин или пароль else { echo "Неправильный логин или пароль"; } }
|
|