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

Форум PHP

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

 

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

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

тема: Достаточно ли хорошая защита?
 
 автор: Vados   (28.05.2007 в 00:30)   письмо автору
 
 

Всем привет!

Необходимо реализовать авторизацию на админ. страницы. Есть вот такой скрипт:

<?php

if (!defined('Phoenix')) exit;
include_once(
'dealCommon.php');

function  
auth()
{
    global 
$_COOKIE$_POST;
    
$login trim($_POST['login']);
    
$pass md5($_POST['pass']);
    
    if (!
get_magic_quotes_gpc())
    {
        
$login mysql_escape_string($login);
    }
    
    if (!empty(
$login))
    {
        
$q mysql_query("SELECT id, level FROM login_user WHERE BINARY login = '$login' and BINARY pass = '$pass'");
        
        if (
$r mysql_fetch_object($q))
        {
            
$sid md5(uniqid(rand(), 1));
            
$time time() + 3600;
            
mysql_query("UPDATE login_user SET sid = '$sid', exp = $time WHERE id = {$r -> id}");
            
            
setcookie("sid"$sid0"/");
            return 
$r -> level;
        }
    }
    
    
$sid addslashes($_COOKIE['sid']);
    if (!empty(
$sid))
    {
        
$time time();
        
$q mysql_query("SELECT BINARY id, level FROM login_user WHERE sid = '$sid' AND exp >= $time");
        
        if (
$r mysql_fetch_object($q))
        {
            return 
$r -> level;
        }
    }

    echo 
"    
<html>
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html;\">
<title>Login to Control Panel</title>
<link href=\"images/dealcenter.css\" type=text/css rel=stylesheet>
</head>
<body bgcolor=\"#f7f7f7\" link=\"#586992\" vlink=\"#586992\" alink=\"#036AB6\">
<TABLE border=\"0\" width=\"100%\" height=\"100%\">
<TR>
<TD><CENTER>
<TABLE CELLSPACING=\"1\" BORDER=\"0\" CELLPADDING=\"0\" BGCOLOR=\"#dae6f1\">
<TR>
    <TD><FONT color=\"black\" FACE=\"Verdana, Arial, Helvetica, sans-serif\" size=\"3\"><B>&nbsp;Authorization</B></FONT></TD>
</TR>
<TR>
    <TD><TABLE bgcolor=white border=0>
<TR>
    <td colspan=3 height=\"15\"></td>
</TR>
<TR><form name=\"auth\" method=\"POST\">
    <TD rowspan=\"3\" width=\"70\"><center><IMG SRC=\"images/secure.jpg\" WIDTH=\"55\" HEIGHT=\"55\" BORDER=\"0\" ALT=\"\"></TD>
    <TD><FONT color=\"#000000\" FACE=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\"><B>Login:</B></TD>
    <TD width=\"100\"><input type=\"text\" style=\"width:130\" name=\"login\"></TD>
</TR>
<TR>
    <TD><FONT color=\"#000000\" FACE=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\"><B>Password:</b></TD>
    <TD><input type=\"password\" style=\"width:130\" name=\"pass\"></TD>
</TR>
<TR>
    <TD><input type=\"hidden\" name=\"action\" value=\"check\"></TD><TD><input type=\"submit\" class=\"button\" style=\"WIDTH:90\" value=\"Login\"></TD>
</form></TR>
<TR>
    <td colspan=3 height=\"10\"></td>
</TR>
</TABLE></TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
</body>
</html>"
;
    exit;
}
?>


Можно ли назвать это достаточно хорошей защитой админ. страниц?

   
 
 автор: Trianon   (28.05.2007 в 00:38)   письмо автору
 
   для: Vados   (28.05.2007 в 00:30)
 

if (!get_magic_quotes_gpc()) вызван слишком поздно и учитывает не все варианты развития событий. Это то, что видно сразу. Завтра может еще что-нибудь найду.
И что значит слово BINARY , постоянно повторяемое?
Ответить желательно со ссылкой либо на стандарт, либо на мануал.

   
 
 автор: Vados   (28.05.2007 в 01:02)   письмо автору
 
   для: Trianon   (28.05.2007 в 00:38)
 

Если при создании таблицы не был задан атрибут BINARY для столбцов, то величины в столбцах типа CHAR и VARCHAR сортируются и сравниваются без учета регистра. При задании атрибута BINARY величины в столбце сортируются и сравниваются с учетом регистра в соответствии с порядком таблицы ASCII на том компьютере, где работает сервер MySQL. Атрибут BINARY не влияет на процессы хранения или извлечения данных из столбца.

Атрибут BINARY является "прилипчивым''. Это значит, что, если в каком-либо выражении использовать столбец, помеченный как BINARY, то сравнение всего выражения будет выполняться как сравнение величины типа BINARY.

Касаемо стандарта, то думаю, здесь может помощь расканье в доке http://www.mysql.com

Встречный вопрос, а какие варианты нужно еще учесть?

   
 
 автор: Trianon   (28.05.2007 в 01:55)   письмо автору
 
   для: Vados   (28.05.2007 в 01:02)
 

Это всё так, только почему этот атрибут оказался в тексте запроса SELECT , а не в описании таблицы (Запрос CREATE TABLE)?
Нужно учесть вариант, что кому-то захочется ввести апостроф, кавычку, обратный слэш в поле пароля. В этом случае криптошеш md5 у Вас будет посчитан неправильно.

   
 
 автор: Unkind   (28.05.2007 в 00:41)   письмо автору
 
   для: Vados   (28.05.2007 в 00:30)
 

$_COOKIE и $_POST и так суперглобальные массивы.

   
Rambler's Top100
вверх

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