Защита PHP файлов админ-панели

Статус
Закрыто для дальнейших ответов.

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
Коллеги, поделитесь опытом защиты php файлов админки сайта от запросов через url
Они все хранятся в отдельной директории, но есть возможность вызвать их напрямую, без авторизации, окультным способом подобрав нужный запрос
Дело в том, что использую ajax для быстрого редактирования ячеек БД через GET запросы

Когда-то защищал открытые формы в одном проекте случайным хешем, который писался в сессию при генерации страницы и отдавался вместе с отправкой формы - насколько этот метод в данном случае оправдан? И что еще можно придумать, чтобы авторизованные редакторы сайта не сталкивались со сложными механизмами безопасности?
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 138
Рекомендуется делать админку - что бы админка работала только через 1 файл, остальные файлы подключались по требованию, именно подключались.
И папка блокируется через .htaccess. Заливаем его в папку с файлами и в нём пишем
Код:
deny from all
Если всё необходимо что бы был прямой доступ к файлам (в том числе и AJAX запросы), то необходимо в каждом файле делать проверку на авторизацию.
Для этого проще написать функцию и подключать ее. Тут вариантов достаточно много. Можешь посмотреть любой движок как это в нем реализовано.
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418
Коллеги, поделитесь опытом защиты php файлов админки сайта от запросов через url
Они все хранятся в отдельной директории, но есть возможность вызвать их напрямую, без авторизации, окультным способом подобрав нужный запрос
Дело в том, что использую ajax для быстрого редактирования ячеек БД через GET запросы

Когда-то защищал открытые формы в одном проекте случайным хешем, который писался в сессию при генерации страницы и отдавался вместе с отправкой формы - насколько этот метод в данном случае оправдан? И что еще можно придумать, чтобы авторизованные редакторы сайта не сталкивались со сложными механизмами безопасности?
самое правильное использовать фреймворк, где есть нормальный ACL :) и не запариваться, а по хорошему нужно на любой запрос проверять доступ юзера, по полям, находящимся в сессии
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
Рекомендуется делать админку - что бы админка работала только через 1 файл, остальные файлы подключались по требованию, именно подключались.
И папка блокируется через .htaccess. Заливаем его в папку с файлами и в нём пишем
Код:
deny from all
Если всё необходимо что бы был прямой доступ к файлам (в том числе и AJAX запросы), то необходимо в каждом файле делать проверку на авторизацию.
Для этого проще написать функцию и подключать ее. Тут вариантов достаточно много. Можешь посмотреть любой движок как это в нем реализовано.
Хм.. интересное решение, но есть минус, выведет страницу, что папка закрыта или вы не авторизованы, чет в этом роде, сразу будет понятно, что такая папка или файл есть) А я это сделал чуть по другому:
Код:
//Страница index.php
define( 'PROTECT',1); //Формируем константу
include 'db.php'; //Подключаем файл бд
Код:
//страница db.php
if (defined('PROTECT')){
//Тут будет наш какой то скрытый текст, например пароль от базы данных, таблицы и тд
}
else{
//Тут перкидываем юзера куда нибудь через заголовок, если нет константы
}
И если пользователь перейдет на страницу db.php, то его просто переадресует и выведет, что страница не найдена..
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418
Adanos
Ну что, минусовать? Вы вопрос прочтите сначала.
А теперь внимательно прочтите.

А теперь вопрос на засыпку: как ваше решение поможет в этом случае, особенно если учесть, что файлы должны вызываться.
p.s. Далеко не вы один отвечаете на вопрос, на который не вас просили ответить, а на который хотелось бы ответить :)
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
Adanos
Ну что, минусовать? Вы вопрос прочтите сначала.
А теперь внимательно прочтите.

А теперь вопрос на засыпку: как ваше решение поможет в этом случае, особенно если учесть, что файлы должны вызываться.
Ну значит минусуйте.. Я так делал, только мне не надо было, что бы файлы вызывались через адресную строку...
Да и чем мой вариант не подходит?
Файл index.php в папке с админкой:
Код:
if($_GET['mod']=='adminka'){
define( 'PROTECT',1); //Формируем константу
include 'adminka.php'; //Подключаем файл админки
}
else{
//перекидываем на страницу, что файл или папка не найдены
}
файл adminka.php
Код:
if (defined('PROTECT')){
//Тут админка, скрытый текст
}
else{
//Тут перкидываем юзера куда нибудь через заголовок, если нет константы
}
Или я не правильно понял выражение "окультным способом подобрав нужный запрос"?
Даже если злой юзер перейдет в папку: adminka/ и ему выдаст что страница не найдена, то врятле он будет подбирать строку, т.к решит что папки правда не существует..
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418
Эти запросы есть в ajax. Константа не при чем, т.к. эти файлы и так должны выполняться, они не являются элементами! Это отдельные готовые модули. Задача защитить на уровне авторизации. тогда скорее инклудить нужно файл, проверяющий что в сессии есть параметр
 
Статус
Закрыто для дальнейших ответов.
Верх Низ