Простая система защиты

El Diablo

Доброе зло
Доброго времени господа, не знал куда разместить эту тему по этому публикую тут, такой вопрос, у меня задача: создать сайт визитку - я ее успешно реализую без использования платформы, и админ панель работает по такому принципу в БД MySQL есть таблица с логином и паролем, если человек вводит все верно он попадает в админку, и может добавлять\редактировать\удалять и т.п., если нет то соответственно нет, это простейшая система, на сколько она эффективна?

каждый файл php в админке начинается с
PHP:
include ("lock.php");
а в этом файле как вы понимаете форма логин пароля, если она не проходит то дальше не прогружается страничка.

P.S. Наследие по курсам Попова по PHP, мне важно знать на сколько это эффективно, т.к. сайтов становится все больше у меня, и задумался о более серьезной защите. Если есть инфа по защите скиньте или скажите в каком направлении плыть.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Зря ты тут Попова упомянул, зря...

Это вообще не эффективно, плодить одинаковый говнокод по всем файлам. Копать в направлении нормальной книги по PHP, того же Котерова. А дальше к MVC, шаблонам и отделению логики от представления.
 

El Diablo

Доброе зло
c0dex Думаю не зря, я понимаю всеобщее негодование, однако это первое что понятное нашел будучи 0 в PHP (строил раньше на платформах и только рулил HTML + CCS = что значит был нулем в сайтостроении), и факт в том что сам пришел к тому что мне нужна реабилитация после его курсов и сколько дыр в этом говнокоде, я бы даже сказал это одна большая дыра прикрытая с некоторых сторон стеночкой из кода както так, а вот за Котерова респект, сейчас же буду рыть инфу :)

P.S. Мне стыдно сказать но я только только изучаю java и jQuery =\,просто в один прекрасный момент устал от зависимости движков и хочется свое собирать однакое свое и свое качественное это очень разные понятия, так что есть к чему стремится =)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Java не имеет отношения к jQuery, это раз. Во вторых можно быть очень классным спецом в "сайтостроении", будучи первоклассным клиент-сайд программистом на JavaScript/HTML/CSS.

Что значит рулил на платформах?

Факт реабилитации засчитан.
 

Фанат

oncle terrible
Команда форума
PHP]include ("lock.php");[/PHP]
Боюсь даже представить, что в этом файле написано.

Если он, кстати, по какой-то причине отсутствует или не найден (что очель легко может случиться), то защита - тю-тю
 

El Diablo

Доброе зло
c0dex - на счет:
Java не имеет отношения к jQuery, это раз.
Это сейчас то я знаю что java и javascript это разные языки, я так написал т.к. курс у попова называется:
Вот по нему и начинал учится =)

Вернемся к теме сабжа! :

Фанат в этом файле вот такой код:

PHP:
<?php
include("blocks/bd.php");
if (!isset($_SERVER['PHP_AUTH_USER']))

{
        Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
        Header ("HTTP/1.0 401 Unauthorized");
        exit();
}

else {
        if (!get_magic_quotes_gpc()) {
                $_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']);
                $_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']);
        }

        $query = "SELECT pass FROM userlist WHERE user='".$_SERVER['PHP_AUTH_USER']."'";
        $lst = @mysql_query($query);

        if (!$lst)
        {
            Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
        Header ("HTTP/1.0 401 Unauthorized");
        exit();
        }

        if (mysql_num_rows($lst) == 0)
        {
           Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
           Header ("HTTP/1.0 401 Unauthorized");
           exit();
        }

        $pass =  @mysql_fetch_array($lst);
        if ($_SERVER['PHP_AUTH_PW']!= $pass['pass'])
        {
            Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
           Header ("HTTP/1.0 401 Unauthorized");
           exit();
        }
}
?>
 

Dez

Новичок
я так и догадался, что на базовой аутентификации.
Это самый примитивный вариант. Для защиты достаточно. Но пароль в базе в открытую не хранят. А хранят его засоленный хэш.


c0dex написал(а):
Что значит рулил на платформах?
на цмс-ках, особенно таких конструкторах как друпал, сайты создаются преимущественно непрограммистами и остается оформить внешний вид - хтмл, цсс.
 

Фанат

oncle terrible
Команда форума
если добавить немного программирования в это царство копипасты
PHP:
<?php
include("blocks/bd.php");
if (isset($_SERVER['PHP_AUTH_USER']))
{
      $pass = $db->getOne("SELECT pass FROM userlist WHERE user=?s", $_SERVER['PHP_AUTH_USER']);
      $ok = ($_SERVER['PHP_AUTH_PW'] == $pass);
}
if (empty($ok))
{
        Header ('WWW-Authenticate: Basic realm="Admin Page"');
        Header ("HTTP/1.0 401 Unauthorized");
        exit();
}
 
Сверху