Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Авторизация на сессиях
 
 автор: Saveliy   (08.02.2008 в 12:05)   письмо автору
 
 

Здравствуйте, хотел бы выразить большую благодарность создателем данного ресурса, и авторам замечательных книг (Головоломки на PHP для хакера, PHP 5 практика разработки Web-сайтов), на которых можно сказать и учусь программировать в данной сфере :-)
Вообщем респект ВАМ )

Написал авторизацию на сессиях: при условии что в бд пароль юзера храниться в md5

<?
  session_start
();
  
//если нажали кнопку
  
if ($_POST[\'sub\'])
  {
    require_once(\"config.php\");
    //проверяем данные на sql-inj
    $login = mysql_escape_string($_POST[\'login\']);
    $passw = mysql_escape_string($_POST[\'passw\']);

    $result = mysql_query(\"select * from user where login=\'$login\'\");
    $data = mysql_fetch_assoc($result);
    if (mysql_num_rows($result)>0)
    {
      if ($data[\'passw\'] == md5($passw))
      {
        //устанавливаем sessie
        $_SESSION[\'login\'] = $data[\'login\'];
        $_SESSION[\'passw\'] = $data[\'passw\'];
        echo \"Привет \".$data[\'login\'].\" Работает Сессия\";
      }
      else echo \"Пароль неверен\";
    }
  }

  //если сессия заполнена
  if ( (isset($_SESSION[\'login\'])) && (isset($_SESSION[\'passw\'])) )
  {
      require_once(\"config.php\");
      //находим в БД пользователя удовлетворяющего сессиям
      $result = mysql_query(\"select * from user where login=\'\".$_SESSION[\'login\'].\"\' AND passw=\'\".$_SESSION[\'passw\'].\"\'\");
      //если такой пользователь существует
      if (mysql_num_rows($result) == 1)
      {
        $data = mysql_fetch_assoc($result);
        //выводим на экран имя юзера :-)
        echo \"<p>Привет <b>\".$data[\'login\'].\"</b> Работает Сессия</p>\";
      }
      //если в БД нету такого пользователя то обнуляем кукисы и переходи к авторизации
      else
      {
        echo \"А подделывать нехорошо\";
        unset($_SESSION[\'login\']);
        unset($_SESSION[\'passw\']);
        echo \"<head><meta http-equiv=\'refresh\' content=\'1 url=index.php\'></head>\";
      }
  }
  else
      echo \"<form method=\'post\'>
              <table rules=\'all\'>
                <tr><td colspan=\'2\' align=\'center\'><b>Авторизация</b></td></tr>
                <tr><td>Ваш логин</td><td><input type=\'text\' name=\'login\'></td></tr>
                <tr><td>Ваш пароль</td><td><input type=\'password\' name=\'passw\'></td></tr>
                <tr><td colspan=\'2\' align=\'center\'><input type=\'submit\' name=\'sub\' value=\'Отправить\'></td></tr>
              </table>
            </form>\";
?>


хотелось бы спросить:

1) Возможно ли обойти данную защиту ?

2) Что можно в ней подправить, что б она была более защищена от различных атак ?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования