Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Безопасность авторизации, достаточно ли такого? 
:(
    Опции темы
Crusaderr
Дата 8.4.2010, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 4.10.2007

Репутация: нет
Всего: нет



Достаточно ли такого кода для однозначного определения пользователя и безопасности авторизации?
Код

function def($var, $sql=true) {
     $var= htmlspecialchars($var, ENT_QUOTES, "windows-1251");     // мнемонизировали строку.
     if(get_magic_quotes_gpc ())
     {
         $var= stripslashes ($var);         // убрали лишнее экранирование.
     }
     if ($sql)
     {
         $var= mysql_real_escape_string ($var);         // если нужен MySQL-запрос, то делаем соответствующую очистку.
     }
     $var= strip_tags($var);     //убираем теги.
     return $var;
    }

if (!isset($_SESSION['id']))
    {        if(isset($_COOKIE["id"])&&$_COOKIE["id"]!=""&&isset($_COOKIE["pass"])&&$_COOKIE["pass"]!="") 
        {
        $id = def($_COOKIE["id"]); // def() -- функция обработки для фильтровки от инъекций
        $pass = def($_COOKIE["pass"]);
        $res1 = mysql_query("SELECT * FROM users WHERE id='$id'AND pass='$pass'");
            if(mysql_num_rows($res1)==1)
            {
            $res1 = mysql_fetch_array($res1);
            $_SESSION['id'] = $res1['id'];    //устанавливаем id в сессию
            }
        }
        else {
        header ("location: http://".$_SERVER["SERVER_NAME"]."/");
        exit;
        }
    }
    $res = mysql_fetch_assoc(mysql_query("SELECT * FROM users WHERE id='".def($_SESSION['id'])."'"));
    if ($res['id']=="") { header ("location: http://".$_SERVER["SERVER_NAME"]."/"); exit; }


PM MAIL WWW ICQ Jabber   Вверх
s0lman
Дата 8.4.2010, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



Есть еще ВСД...


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
Crusaderr
Дата 8.4.2010, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 4.10.2007

Репутация: нет
Всего: нет



Цитата(s0lman @ 8.4.2010,  11:53)
Есть еще ВСД...

Но ведь переменные сессии хранятся на сервере? Разве нет?
PM MAIL WWW ICQ Jabber   Вверх
nerezus
Дата 8.4.2010, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Crusaderr, просто отвратительный код.

Запоминай основное правило: ты должен знать, что делает твой код и понимать, зачем он это делает.

Цитата

 $var= htmlspecialchars($var, ENT_QUOTES, "windows-1251"); 
 Зачем? о_О

Цитата

if(get_magic_quotes_gpc ())
     {
         $var= stripslashes ($var);         // убрали лишнее экранирование.
     }
 Проще отключить сразу и больше не проверять.

Цитата

 $var= strip_tags($var);     //убираем теги.
 ЗАЧЕМ??? Ты вообще понимаешь, что она делает? По мануалу искал функции и запихивал, не читая описаний?




--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Crusaderr
Дата 8.4.2010, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 4.10.2007

Репутация: нет
Всего: нет



Цитата(nerezus @ 8.4.2010,  14:04)
Crusaderr, просто отвратительный код.

Запоминай основное правило: ты должен знать, что делает твой код и понимать, зачем он это делает.

Цитата

 $var= htmlspecialchars($var, ENT_QUOTES, "windows-1251"); 
 Зачем? о_О

Цитата

if(get_magic_quotes_gpc ())
     {
         $var= stripslashes ($var);         // убрали лишнее экранирование.
     }
 Проще отключить сразу и больше не проверять.

Цитата

 $var= strip_tags($var);     //убираем теги.
 ЗАЧЕМ??? Ты вообще понимаешь, что она делает? По мануалу искал функции и запихивал, не читая описаний?

это было взято из примера функции для безопасной передачи данных в запрос mysql..
PM MAIL WWW ICQ Jabber   Вверх
skyboy
Дата 8.4.2010, 14:42 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(Crusaderr @  8.4.2010,  13:28 Найти цитируемый пост)
для безопасной передачи данных в запрос mysql

достаточно использовать mysql_real_escape_string, если используешь mysql_* функции для работы с БД или же использовать параметризированные запросы в другом случае
PM MAIL   Вверх
Crusaderr
Дата 8.4.2010, 18:41 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 4.10.2007

Репутация: нет
Всего: нет



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

Добавлено через 2 минуты
вот файл логина:
Код

<?
    session_start();

    $email = def($_POST['email']);
    $pass  = def($_POST['pass']);
    $pass=md5($pass);
    //проверяем есть ли пользователь с таким login'ом и password'ом
    $res = mysql_query("SELECT * FROM users WHERE email='$email' AND pass='$pass'");

    if(mysql_num_rows($res)!=1)
    {    //такого пользователя нет
            $text= "<b>Ошибка:</b> Введены неверные логин или пароль";
    }
    else
    {
    //пользователь найден
        $res = mysql_fetch_array($res);
        $_SESSION['id'] = $res['id'];    //устанавливаем id в сессию
        setcookie ("id", $res['id'], time()+604800, "/"); //кука на неделю
        setcookie ("pass", $pass, time()+604800, "/"); //кука на неделю
        header("Location: http://".$_SERVER["SERVER_NAME"]."/"); 
        exit;

    }

?>


PM MAIL WWW ICQ Jabber   Вверх
nerezus
Дата 8.4.2010, 19:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

это было взято из примера функции для безопасной передачи данных в запрос mysql..
 Больше там не читай. И не копипасть код, смысла которого не понимаешь.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1187 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.