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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вход в админку, вопрос корректности реализации 
V
    Опции темы
hetfield
Дата 4.3.2009, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Столкнулся с задачей сделать админку на сайте... Но сильно сомневаюсь в надежности. Был бы благодарен, если бы подсказали и указали косяки...

login.php

Код

Логин:<input  type="text" name="login">
Пароль:<input type="password" name="pass">


Код

if (isset($_POST['enter'])) {
    $login = trim((htmlspecialchars($_POST['login'])));
    $pass = trim((htmlspecialchars($_POST['pass'])));
        $pass = md5($pass . "secret");  // перед этим нужный пароль был записан в базу таким образом
    
    db_connect();
    $query = ("SELECT login, pass, role FROM `admin` WHERE login = '".mysql_real_escape_string($login)."' and pass = '".mysql_real_escape_string($pass)."' ");
    $result = mysql_query($query) or die(mysql_error());
    db_close();
    
    if (mysql_num_rows($result) == 0 ) {
        // пишу ошибку
    }
    else {
             $_SESSION['autorized']=true;
             $_SESSION['login']=$login;
         // отправляю на следующую страницу
    }
}



second.php

Код

session_start();
if (!isset($_SESSION['autorized']) and !isset($_SESSION['login']) { 
    // назад на login.php 
}
else {
    // страница
}



Это сообщение отредактировал(а) hetfield - 4.3.2009, 23:55
PM MAIL   Вверх
enof
Дата 5.3.2009, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

trim((htmlspecialchars($_POST['login'])));

Это еще зачем?
Код

mysql_real_escape_string($pass)

и это?

Как вариант моно использовать базовую http авторизацию.
mod_auth.php
Код

<?php
if(isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) 

{
    $login = mysql_escape_string($_SERVER['PHP_AUTH_USER']);
    $pass = md5($_SERVER['PHP_AUTH_PW']."secret");

    $query = ("SELECT login, pass, role FROM `admin` WHERE login = '$login' and pass = '$pass' ");
    $result = mysql_query($query) or die(mysql_error());
    if(mysql_num_rows($result) == 0 )
    {
        header("WWW-Authenticate: Basic realm=\"Admin\""); 

        header("HTTP/1.0 401 Unauthorized"); 

        exit(); 
    }

}else{
    header("WWW-Authenticate: Basic realm=\"Admin\""); 

    header("HTTP/1.0 401 Unauthorized"); 

    exit();
}
?>

И в каждом скрипте подключать
Код

require_once ("mod_auth.php.");


Это сообщение отредактировал(а) enof - 5.3.2009, 00:18
PM MAIL ICQ Skype   Вверх
bars80080
Дата 5.3.2009, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



да в принципе всё вроде на месте


а это

    $login = trim((htmlspecialchars($_POST['login'])));
    $pass = trim((htmlspecialchars($_POST['pass'])));

лишнее. смысла в htmlspecialchars нет никакого. вот была бы проверка на ввод нужных символом, было бы лучше
PM MAIL WWW   Вверх
enof
Дата 5.3.2009, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(bars80080 @  5.3.2009,  00:15 Найти цитируемый пост)
вот была бы проверка на ввод нужных символом,

А смысл?
PM MAIL ICQ Skype   Вверх
hetfield
Дата 5.3.2009, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

mysql_real_escape_string($pass);


ну на сколько я понимаю  mysql_real_escape_string - экранирует ковычки, мол, защита от инъекций. Почему она тут не нужна? 



Это сообщение отредактировал(а) hetfield - 5.3.2009, 00:25
PM MAIL   Вверх
bars80080
Дата 5.3.2009, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



Цитата(enof @  4.3.2009,  23:21 Найти цитируемый пост)
А смысл?

а что бы не было таких ников: pe#@yt4"!'46#$%

Добавлено через 54 секунды
Цитата(hetfield @  4.3.2009,  23:23 Найти цитируемый пост)
ну на сколько я понимаю  mysql_real_escape_string - экранирует ковычки, мол, защита от инъекций. Почему она тут не нужна? 

потому что md5 выдаёт тебе hex-число, в нём никаких кавычек уже нет
PM MAIL WWW   Вверх
enof
Дата 5.3.2009, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



hetfield, в $pass md5 хеш пароля, следовательно символов кроме букв и цифр там не будет.
Да это так, придирка smile 
Цитата(hetfield @  5.3.2009,  00:23 Найти цитируемый пост)
а htmlspecialchars уместна только если в базу идет запись? 

htmlspecialchars только при выводе. В базе должно храниться как есть.
PM MAIL ICQ Skype   Вверх
hetfield
Дата 5.3.2009, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

в $pass md5 хеш пароля, следовательно символов кроме букв и цифр там не будет.

тогда если логин без md5 хеша, тогда стоит оставить?
PM MAIL   Вверх
enof
Дата 5.3.2009, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



hetfield, да, нужно.
Только надо смотреть на предмет вкл\откл магических кавычек.
PM MAIL ICQ Skype   Вверх
hetfield
Дата 5.3.2009, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Все, ребята, спасибо  smile  Помогли... 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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