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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Прошу посмотреть - надежен ли мой скрипт авторизации?

Сообщения:  [1-10]    [11-20]   [21-30]  [31-34] 

 
 автор: Sergey89   (14.01.2007 в 16:08)   письмо автору
 
   для: provodnik   (14.01.2007 в 15:58)
 

$admins = mysql_query("SELECT * FROM admin WHERE login = '". addslashes($_SESSION['login'])."' AND password = '".md5($_SESSION['password'])."'");  

   
 
 автор: provodnik   (14.01.2007 в 15:58)   письмо автору
 
   для: Sergey89   (14.01.2007 в 13:58)
 

>Зачем так длинно? Достаточно:

>
$login = addslashes($_POST['login']);  
>$password = md5($_POST['password']);


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

   
 
 автор: Sergey89   (14.01.2007 в 13:58)   письмо автору
 
   для: provodnik   (10.01.2007 в 01:12)
 

$login = htmlspecialchars(stripslashes($_POST['login']), ENT_QUOTES);  
$password = md5(htmlspecialchars(stripslashes($_POST['password']), ENT_QUOTES));

Зачем так длинно? Достаточно:
$login = addslashes($_POST['login']);  
$password = md5($_POST['password']);

   
 
 автор: cheops   (14.01.2007 в 13:16)   письмо автору
 
   для: kod   (14.01.2007 в 03:49)
 

Возможно вам будут интересны статьи
http://www.softtime.ru/info/articlephp.php?id_article=34
http://www.softtime.ru/info/articlephp.php?id_article=27
темы форума
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=8481
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=80
и приложение
http://www.softtime.ru/info/authorization.php

   
 
 автор: kod   (14.01.2007 в 03:49)   письмо автору
 
   для: provodnik   (10.01.2007 в 01:12)
 

Господа кодеры - подскажите автору. Просто сам ищу повозможности готовый код авторизации. И в этой теме как нельзя подробно всё расписано, за исключением сообщения выше.
Хотелось бы "доработать" данный код, для дальнейшего использования его на сайте. Может в нем есть еще какие нибудь уязвимые места?

   
 
 автор: provodnik   (10.01.2007 в 01:12)   письмо автору
 
   для: provodnik   (09.01.2007 в 21:33)
 

Всем спасибо за оказанное содействие начинающему...
Теперь буду вставлять ваши примеры кодов и тестировать.
Спасибо... (((

Добавляю после тестирования:
Сразу попрошу прощения у администраторов и пользователей за большие куски кода...


Вот код файла админ профиля ( "заливателя" в базу):

<?
if(isset($_POST['login']))
{    if(
$_POST['login'] != "" && $_POST['password'] != "")
    {    
$_POST['login'] = str_replace('"''"'$_POST['login']);
        
$_POST['login']  = htmlspecialchars(stripslashes($_POST['login']), ENT_QUOTES); 
        
$_POST['password'] = str_replace('"''"'$_POST['password']);
        
$_POST['password']  = md5(htmlspecialchars(stripslashes($_POST['password']), ENT_QUOTES)); 
        
$change mysql_query("UPDATE admin SET login = '"$_POST['login'] ."', password = '"$_POST['password'] ."'");
    }
}

if(isset(
$_GET['op']) && $_GET['op'] == "edit")
{    
$profile mysql_query("SELECT * FROM admin");

    if(
mysql_numrows($profile) == 1)
    {    
$profile mysql_fetch_array($profile);
        if(isset(
$_POST['login'])) $_POST['login'] = str_replace('"''&quot;'$_POST['login']);
        
$profile['login'] = str_replace('"''&quot;'$profile['login']);
        
$profile['login']  = htmlspecialchars(stripslashes($profile['login']), ENT_QUOTES);
        if(isset(
$_POST['password'])) $_POST['password'] = str_replace('"''&quot;'$_POST['password']);
        
$profile['password'] = str_replace('"''&quot;'$profile['password']);
        
$profile['password']  = htmlspecialchars(stripslashes($profile['password']), ENT_QUOTES);

    echo 
"<form method=post action=\"http://"$_SERVER['HTTP_HOST'] ."/admin/profile/\">";
    echo 
"Редактировать данные владельца";
    echo 
"Логин - <input size=50 name=login type=text value=\""$profile['login'] ."\">
          Пароль - <input size=50 name=password type=text value=\""
$profile['password'] ."\">
          <input type=submit value=\"Изменить\"></form>"
;
    } else echo 
"Ошибка!";
}
else 
{    
$profile mysql_query("SELECT * FROM admin");
    
    if(
mysql_numrows($profile) == 1)
    {    
$profile mysql_fetch_array($profile);
        echo 
"Данные админа";
        echo 
"Логин - "$profile['login'] ."
        Пароль - "
$profile['password'] ."
        <a href=\"http://"
$_SERVER['HTTP_HOST'] ."/admin/profile/edit/\">Изменить данные</a>";
    } else echo 
"Ошибка!";
}
?>


Теперь код страницы admin.php:


<? 
session_start
(); 
include(
"mysql.php"); //файл с переменными для коннекта к базе 
include("config.php"); //файл с переменными для управления сайтом 

$title "Панель администратора"
include(
"design/top.inc.php"); // шапчёнка 

      
if($_GET['action'] == "logout"){ 
      if(isset(
$_SESSION['login']) && isset($_SESSION['password']))    { 
            
session_unregister("login"); 
            
session_unregister("password"); 
      } 
      } 

if(isset(
$_POST['login']) && isset($_POST['password']) && !isset($_SESSION['login']) && !isset($_SESSION['password'])) { 

//это было
//$admins = mysql_query("SELECT * FROM admin WHERE login = '". $_POST['login']."' AND password = '". $_POST['password']."'"); 

//стало теперь:
$admins mysql_query("SELECT * FROM admin WHERE login = '"htmlspecialchars(stripslashes($_POST['login']))."' AND password = '".md5(htmlspecialchars(stripslashes($_POST['password'])))."'"); 

if(
mysql_numrows($admins) == 1) { 

//это было
 //   $login = $_POST['login']; 
 //   $password = $_POST['password']; 

//стало теперь:
$login htmlspecialchars(stripslashes($_POST['login']), ENT_QUOTES);  
$password md5(htmlspecialchars(stripslashes($_POST['password']), ENT_QUOTES));

    
session_register("login"); 
    
session_register("password"); 
                                 } 
 else echo 
"<center>Данные не верны!<br><br></center> 
 
$admin_login_form"// форма  

    else if(!isset(
$_SESSION['login']) && !isset($_SESSION['password'])) 
    echo 
$admin_login_form

if(isset(
$_SESSION['login']) && isset($_SESSION['password'])) { 

//это было
//$admins = mysql_query("SELECT * FROM admin WHERE login = '". $_SESSION['login']."' AND password = '". $_SESSION['password']."'"); 

//стало теперь:
$admins mysql_query("SELECT * FROM admin WHERE login = '"htmlspecialchars(stripslashes($_SESSION['login']))."' AND password = '".md5(htmlspecialchars(stripslashes($_SESSION['password'])))."'");

if(
mysql_numrows($admins) == 1) { 
    if(
$_GET['action'] == "content") echo "<a href=\"http://"$_SERVER['HTTP_HOST'] ."/admin/content/\">Контент</a>"// используется мод реврайт 
    
if($_GET['action'] == "catalog") echo "<a href=\"http://"$_SERVER['HTTP_HOST'] ."/admin/catalog/\">Каталог</a>";  // используется мод реврайт 
    
if($_GET['action'] == "profile") echo "<td width=25% align=center><b class=\"no_underline\">Сменить&nbsp;пароль</b></td>"// используется мод реврайт 
    
echo "<a href=\"http://"$_SERVER['HTTP_HOST'] ."/admin/logout/\">Выйти</a>"// используется мод реврайт 
    
echo "<br><br>"

    if(isset(
$_GET['action'])) { 
        if(
$_GET['action'] == "content") include("admin/content.php"); 
          if(
$_GET['action'] == "catalog") include("admin/catalog.php"); 
          if(
$_GET['action'] == "profile") include("admin/profile.php"); 
                                } 
} else echo 
"Данные не верны! 
             <br><br> 
             
$admin_login_form"

include(
"design/foot.inc.php"); // подвальчик 
?> 


Дамп таблицы:

INSERT INTO `admin` VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3');


Никак не могу найти ошибку. Постоянно выводит - Данные не верны!
Прошу меня "тыкнуть носом".
Еще раз прошу простить за постинг кода...
Заранее спасибо...

   
 
 автор: Poison   (10.01.2007 в 01:07)   письмо автору
 
   для: provodnik   (10.01.2007 в 00:47)
 


INSERT INTO (name, password) VALUE ($_POST['n'], $_POST['p']);

   
 
 автор: provodnik   (10.01.2007 в 00:47)   письмо автору
 
   для: colix   (10.01.2007 в 00:32)
 

Вот толь нюанс один ( :
у меня ручками была занесена строка в базу, с админ аккаунтом ( она там единственная)

Другими словами: как же мне занести "всё это дело" в базу то? (

   
 
 автор: colix   (10.01.2007 в 00:32)   письмо автору
 
   для: Poison   (10.01.2007 в 00:20)
 

Так?

$password = md5(htmlspecialchars(stripslashes($_POST['password']), ENT_QUOTES));

   
 
 автор: Poison   (10.01.2007 в 00:20)   письмо автору
 
   для: colix   (10.01.2007 в 00:14)
 

Не так=)) Ты сначала создаешь хеш а потом убираешь все теги, которые посути та уже в хеше

   

Сообщения:  [1-10]    [11-20]   [21-30]  [31-34] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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