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

Форум PHP

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

 

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

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

тема: Система авторизации
 
 автор: Alexneo   (06.09.2005 в 19:40)   письмо автору
 
 

Здравствуйте, вот пишу свою первую систему администрирования, хотелось бы узнать есть ли в ниже приведенном коде системы авторизации какие-либо недочеты, ошибки, "дырки":

<?@session_start();?>
<?
function to_sql($str,$size)
{
  
$str=trim($str);
  
$str=substr($str,0,$size);
  
$str=htmlspecialchars(stripslashes($str));
  
$str=str_replace("'","'",$str);
  if(!
get_magic_quotes_gpc())
  {
     
$str=mysql_escape_string($str);
  }
  else
  {
     
$str=$str;
  }
    return 
$str;
}
?>
///////////////////////////////////
<?
                    $main
="Goldfish";
                    
//Windows \r\n
                    //Unix  \n
                    
$os="\r\n";
                    
$admin_login="Alex";
                    
$admin_pass="123";

                    
//параметры БД
                    
$host_db="localhost";
                    
$user_db="alex";
                    
$pass_db="123";
                    
$name_db="news";

                    if(!
mysql_connect($host_db,$user_db,$pass_db))
                    {
                       echo 
"Соединение с базой не установлено - дальнейшая работа невозможна<br>";
                       exit;
                    }

                    if(!
mysql_select_db($name_db))
                    {
                       echo 
"Необходимая БД не выбрана - дальнейшая работа невозможна<br>";
                       exit;
                    }
?>
<?
if(isset($_POST["username"],$_POST["password"]) && !empty($_POST["username"]) && !empty($_POST["password"]))
{
   
$username=to_sql($_POST["username"],15);
   
$password=to_sql($_POST["password"],15);

   if(
$username==$admin_login && $password==$admin_pass)
   {
      
session_register("username","password");
      echo 
"<b>Подождите...</b>";
      echo 
"<meta http-equiv=\"refresh\" content=\"1;url=admin.php\">";
   }
   else
   {
      
session_destroy();
      echo(
"Неверная комбинация логина/пароля");
      echo 
"<meta http-equiv=\"refresh\" content=\"1;url=index.php\">";
   }
}
else
{
  
session_destroy();
  echo(
"Доступ запрещен");
  echo 
"<meta http-equiv=\"refresh\" content=\"1;url=index.php\">";
}
?>

   
 
 автор: cheops   (06.09.2005 в 19:59)   письмо автору
 
   для: Alexneo   (06.09.2005 в 19:40)
 

Хм... а что-то нигде не видно функции mysql_query()? Такое ощущение, что SQL-запрос вообще нигде не выполняется...

   
 
 автор: Alexneo   (07.09.2005 в 04:50)   письмо автору
 
   для: cheops   (06.09.2005 в 19:59)
 

В этом файле SQL и правда не выполняются, а соединение с БД устанавливается потому что я конфигурационные файлы и файл enter.php соединил в один и выложил сюда, сверка производится с $admin_login $admin_pass. Кроме этого какие нибудь недочеты и дыры есть?

   
 
 автор: cheops   (07.09.2005 в 13:14)   письмо автору
 
   для: Alexneo   (07.09.2005 в 04:50)
 

Хм... если запросы не выполняются, то очевидных дыр нет... так как все переменные иницированы, а как попадают переменные с паролем и логином в скрипт - ведь они же не жёстко прописаны в код?

   
 
 автор: Alexneo   (07.09.2005 в 22:11)   письмо автору
 
   для: cheops   (06.09.2005 в 19:59)
 

Жестко прописаны, дело в том что необходим доступ только одному человеку к админовке.

   
 
 автор: cheops   (08.09.2005 в 02:11)   письмо автору
 
   для: Alexneo   (07.09.2005 в 22:11)
 

Тогда не понятно зачем все приготовления с защитой от SQL-инъекций... это может здорово сбить с толку сопровождающего код разработчика.

   
 
 автор: Alexneo   (09.09.2005 в 05:18)   письмо автору
 
   для: cheops   (08.09.2005 в 02:11)
 

А сама функция to_sql написана хорошо? Учтены все моменты для предупреждения взлома?

   
 
 автор: cheops   (09.09.2005 в 12:39)   письмо автору
 
   для: Alexneo   (09.09.2005 в 05:18)
 

Да, от SQL-инъекции всё защищено хорошо, даже лишку, только блок
<?php
  
else 
  { 
     
$str=$str
  }
?>

лишний и реальной пользы без использования MySQL такая защита не приносит, а код усложняет.

   
Rambler's Top100
вверх

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