[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Доступ в админскую часть
SunSet
Вот потехоньку подходит вопрос о доступе к закрытой части сайта. Скажу сразу, что на сайте не планируется регистрации других пользователей.

Рассматриваю как два варианта решения этого вопроса:
1. Через форму ввода на страничке, например, admin/index.php. На ней же делать какието проверки, сессии и прочие крутые штуки smile.gif
2. Или чтото наподобии Попова, инклудом скрипта проверки в каждый файл админского каталога с примерно таким содержанием:
Свернутый текст
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();
        }


}






Во втором случае выскакивает стандартное виндовсовское окошко, как для доступа по фтп. Может эти два варианта одинаковые, может есть какойто получше (застрелиться не предлогать), какой из них лучше в плане безопасности?

P.S. twin, я уже смотрел вот эту ссылку http://php.inkz.ru, не надо в меня ею пулять laugh.gif



Спустя 36 минут, 44 секунды (23.09.2009 - 04:09) kirik написал(а):
Второй вариант, только без баз данных.
Многопользовательская авторизация тебе не нужна, поэтому basic авторизации вполне хватит.

Спустя 28 минут, 59 секунд (23.09.2009 - 04:38) SunSet написал(а):
kirik
А если без баз данных, где хранить пасс и логин?

Спустя 1 час, 31 минута, 17 секунд (23.09.2009 - 06:09) kirik написал(а):
SunSet
в том же php файле.. или в другом smile.gif

Вот функция, если надо..

Свернутый текст
PHP
function basicAuth($username$password)
{
    if(isset(
$_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) && $_SERVER['PHP_AUTH_USER'] == $username && $_SERVER['PHP_AUTH_PW'] == $password)
    {
        return 
true;
    }
    else
    {
        
header('WWW-Authenticate: Basic realm="Login"');
        
header('HTTP/1.0 401 Unauthorized');
        return 
false;
    }
}

Вызывать так:
PHP
$username 'admin';
$password 'passwd';
if(!
basicAuth($username$password))
    exit(
'Залогиньтесь пожалуйста..');

Спустя 9 минут, 16 секунд (23.09.2009 - 06:19) SunSet написал(а):
kirik
Чето я очкую... laugh.gif Неужели все гениальное так просто?)
Может, все же зашифровать както пас и логин и сравнивать их хеши? А то так в голом виде ложить в файл.. unsure.gif

Спустя 4 минуты, 38 секунд (23.09.2009 - 06:23) kirik написал(а):
SunSet
А стоит? smile.gif Если доступ к ФТП есть еще у кого-то кроме тебя, то пароль в любом случае остается открыт, а если никто не сможет посмотреть php-исходники кроме тебя, то зачем шифровать?)

Спустя 7 минут (23.09.2009 - 06:30) SunSet написал(а):
kirik
Ну я так.. поумничать хотел )) Но за советы спасиб.
То так подумал - куки и авторизация на сайте чуть ли не самые уязвимые элементы, решил что если особо не нужны то лучше вообще от них отгородится пока более-менее не буду разбираться.
А htaccess никаким местом не привлекается к защите каталога?

Спустя 34 минуты, 29 секунд (23.09.2009 - 07:05) kirik написал(а):
Цитата (SunSet @ 22.09.2009 - 22:30)
А htaccess никаким местом не привлекается к защите каталога?

Можешь ограничить доступ всем кроме определенных IP, можешь повесить такую же basic-авторизацию (читай про htpasswd).

Цитата (SunSet @ 22.09.2009 - 22:30)
То так подумал - куки и авторизация на сайте чуть ли не самые уязвимые элементы, решил что если особо не нужны то лучше вообще от них отгородится пока более-менее не буду разбираться.

Если ты их сейчас отбросишь, думаешь через некоторое время будешь лучше разбираться в уязвимостях авторизации? smile.gif Как говорил Брюс Ли: "Ты можешь туеву тучу лет тренировать плавательные движения лёжа на берегу, но плавать ты все равно не научишься".

Спустя 1 час, 28 минут, 14 секунд (23.09.2009 - 08:33) twin написал(а):
Цитата
P.S. twin, я уже смотрел вот эту ссылку http://php.inkz.ru, не надо в меня ею пулять

Я для того и пуляю, чтобы не делали
Цитата
2. Или чтото наподобии Попова, инклудом скрипта проверки в каждый файл админского каталога с примерно таким содержанием:

Потому что в этом содержании есть дырка. smile.gif
А kirik дело говорит, по той ссылке есть кстати похожий скрипт.

Спустя 3 часа, 26 минут, 28 секунд (23.09.2009 - 11:59) SunSet написал(а):
twin
Твой подход к авторизации для меня изначально не подходит, так как там куча ненужного (автологин, регистрация, встановление) в моем случае. Да и вчера сел посмотреть видео, как facebook.com ломали, аж страшно стало)) Вроде такие там умища сидят, и всеравно находят дырки в защите. Так что тут защищайся - не защищайся.. а все равно ... ну как в пословице про хочешь сей, а хочешь куй laugh.gif

kirik
Я с сессиями еще не дружу, могу чтото прихимичить, где явно будет дырка, но в силу своего незнания не смогу различить где есть гуд, а где уязвимость. Лучше потом на локалке потренироваться делать, нежели сразу чтото сырое в сеть кидать.

Спустя 15 минут, 2 секунды (23.09.2009 - 12:14) twin написал(а):
Цитата
Твой подход к авторизации для меня изначально не подходит

А ты говоришь не пуляйся. Вот тоже самое.
Взломать сию защиту особого труда не составляет, нужно только перехватить запрос. Пароль по этой схеме передается в открытом виде.
Как впрочем и при любой авторизации по протоколу http. Другой вопрос, станут ли перехватывать запрос для твоего сайта, это довольно недешевое занятие. Так что тут как и при любых запорах, дело в рентабельности. Если у тебя действительно стоящий ресурс и нужно серьёзно защищаться, используй https.
Есть еще один способ - хэшировать пароль на стороне клиента, но это защита пароля, а не сайта. Потому что жулику нет разницы, чистый пароль перехватить или хэш.
Так что бойся, взломают твой бесценный блог (или что там у тебя) и всё что жил - то зря. biggrin.gif biggrin.gif

Спустя 39 минут, 56 секунд (23.09.2009 - 12:54) SunSet написал(а):
twin
Умеешь подбодрить)) laugh.gif

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

Так что... буду юзать прописывание айпишника в htacces + скрипт от kirik'а и молитвы)) smile.gif

Спустя 1 час, 40 секунд (23.09.2009 - 13:55) SunSet написал(а):
Цитата
При базовой аутентификации имя пользователя и его пароль передаются в сеть в открытом виде в течении всего сеанса, когда посетитель работает с защищенной директорией. Хакер может перехватить эту информацию, используя сетевой анализатор пакетов. Данный вид аутентификации не должен использоваться там, где нужна реальная защита коммерческо-ценной информации


Черт... чтото сомнения в голову закрались по поводу данного способа..

Спустя 1 час, 55 минут, 19 секунд (23.09.2009 - 15:50) twin написал(а):
Смотри сюда. smile.gif

Спустя 3 часа, 8 минут, 18 секунд (23.09.2009 - 18:59) SunSet написал(а):
twin
Да всеравно чтото не то.. ну вот стимул какой делать такую защиту, если тут же говорится что сломать ее достаточно просто. unsure.gif
А можешь обьяснить в теории как такой перехват от меня к серверу возможен третим лицом? Может, тогда угомонюсь) smile.gif

Спустя 47 минут, 51 секунда (23.09.2009 - 19:46) kirik написал(а):
SunSet
А оно тебе надо, голову забивать? Сказали же:
Цитата (twin @ 23.09.2009 - 04:14)
станут ли перехватывать запрос для твоего сайта, это довольно недешевое занятие. Так что тут как и при любых запорах, дело в рентабельности.

Так что пока до фэйсбука не дорос, не заморачивайся wink.gif

Спустя 1 минута, 55 секунд (23.09.2009 - 19:48) twin написал(а):
Ну допустим кто нибуди встрянет между тобой и сервером. И будет транзитить запросы. Для сервера он будет клиентом, а для тебя - сервером. И узнает все что захочет.

Спустя 7 минут, 25 секунд (23.09.2009 - 19:56) SunSet написал(а):
kirik
Плох тот солдат, который не мечтает стать... фейсбуком laugh.gif

twin
Ну как так встрянет.. в парадном с ноутбуком чтоли подключится на линию?))

Спустя 3 минуты, 46 секунд (23.09.2009 - 20:00) glock18 написал(а):
SunSet
1. proxy
2. снифферы (перехват трафика то есть)

Спустя 1 минута, 16 секунд (23.09.2009 - 20:01) twin написал(а):
Цитата
Ну как так встрянет.. в парадном с ноутбуком чтоли подключится на линию?))

Может и так, a почему нет то? biggrin.gif

Спустя 9 минут, 27 секунд (23.09.2009 - 20:10) SunSet написал(а):
glock18
Хорошо. Но если есть ограничение к доступу в каталог по ip адресу (если указать статический свой домашний), уже даже перехватив какимто образом, в админку не попасть?

twin
У меня будка с проводами в парадном охраняется бабулями, взлом невозможен laugh.gif

Спустя 1 час, 11 минут, 34 секунды (23.09.2009 - 21:22) twin написал(а):
Цитата
У меня будка с проводами в парадном охраняется бабулями, взлом невозможен

Вот тебе еще один аспект безопасности biggrin.gif
Вообще, что бы обезопаситься на 99%(!), нужно выключить компьютер и закопать его на 3-х метровую глубину. wink.gif

Спустя 7 минут, 56 секунд (23.09.2009 - 21:30) SunSet написал(а):
Ну лад, если сон про хакеров не приснится то не буду снова надоедать про такую авторизацию) smile.gif

Спустя 6 дней, 22 часа, 17 минут, 55 секунд (30.09.2009 - 19:48) UnWind написал(а):
А ещё, если всё же собрался последовать совету kirik по хранению пасса в файле, советую его зашифровать в md5, для большей безопасности.
Мы как то с другом делали чат и сделали что бы все пароли пользователей в базе MySQL хранились в md5, для большей безопасности профилей пользователей.

Спустя 50 минут, 12 секунд (30.09.2009 - 20:38) kirik написал(а):
Цитата (UnWind @ 30.09.2009 - 11:48)
советую его зашифровать в md5, для большей безопасности.
Мы как то с другом делали чат и сделали что бы все пароли пользователей в базе MySQL хранились в md5, для большей безопасности профилей пользователей.

Голый md5 неблагодарная штука, нужна соль. Есть смысл шифровать пароли в базе, но нет никакого смысла шифровать пароль в файле. Все равно его не смогут прочитать снаружи.

Спустя 1 час, 27 минут, 56 секунд (30.09.2009 - 22:06) SunSet написал(а):
... а поскольку регистрации юзеров не планируется и нет необходимости хранить пасс в базе то вывод прост: нет смысла гифровать пасс, если он всеравно будет храниться в файле.

Спустя 10 минут, 20 секунд (30.09.2009 - 22:16) kirik написал(а):
Цитата (SunSet @ 30.09.2009 - 14:06)
а поскольку регистрации юзеров не планируется и нет необходимости хранить пасс в базе то вывод прост: нет смысла гифровать пасс, если он всеравно будет храниться в файле.

Чьерт побери, и не поспоришь! smile.gif

Спустя 8 часов, 22 минуты, 2 секунды (1.10.2009 - 06:38) UnWind написал(а):
Ну хотя да, вы конечно же правы.

Спустя 11 дней, 14 часов, 55 минут (12.10.2009 - 21:33) SunSet написал(а):
Покумекал немного, решил что регистрация все-таки нужна, но несколько в измененном варианте. Доступ к админке и просто модерации будет разделен на два разным аккаунта (следовательно, два разных способа защиты).

twin, а когда планируешь продолжить серию своего бестселлера и дописать регистрацию в плане пользовательской странички и редактирование перс данных? rolleyes.gif

Спустя 8 минут, 34 секунды (12.10.2009 - 21:42) twin написал(а):
Так а вроде же давно написал про регалку...

Спустя 10 минут, 4 секунды (12.10.2009 - 21:52) SunSet написал(а):
twin
Цитата
Ну а дальше нужно сделать личный кабинет, где юзер сможет изменить пароль. Но это уже другая тема, может позже мы её и рассмотрим.

smile.gif ... и не рассмотрели)))

Спустя 6 месяцев, 13 дней, 14 часов, 30 минут, 50 секунд (26.04.2010 - 12:23) Виктор написал(а):
Почему для админке саита этот скрипт не работает? (в хост)????


_____________
... и помните! Каким бы ни был PHP, главное - чтобы он был защищенным! :) (PHP с Анфисой Чеховой)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.