Защита php-файлов.

Oleg Telegin

Новичок
Php-файлы, которые подключаются через include, от прямого вызова можно защитить

1. Как в Joomle в index.php определяем константу define( '_JEXEC', 1 ), а в начале каждого php-файла проверяем ее существование defined('_JEXEC') or die('Restricted access');

2. И в файле .htaccess в папке, где находятся данные php-файлы прописываем Deny from all.

А как защитить php-файлы вызываемые ajax-запросом. Константа уже не видима. И если Deny from all, то вообще файл не доступен.
 

fixxxer

К.О.
Партнер клуба
ajax-запрос - это такой же запрос, как и обычный.

Если хочется, чтобы дурачки не жали, куда не надо, проверяй X-Requested-With. Но понятно, что "аякс" запрос можно послать каким угодно образом; если это вопрос безопасности, а не эстетики, то надо честно проверять все права доступа и так далее непосредственно в коде.
 

С.

Продвинутый новичок
Vladson, защищать от прямого вызова? Стена там --------------------------------->
 

С.

Продвинутый новичок
Точно так же, как от непредусмотренного продуктом вызова скажем index.php
 

Vladson

Сильнобухер
Если в index.php написано что-то типа system($_GET['text']) то и его лучше защищать :)
 

С.

Продвинутый новичок
Кончай уже тупить!

Защита от неавторизованного пользования, от грабинга, хотлинкинга и пр. -- та же самая.
Защиты от прямого вызова не делается, потому что АЯКС-вызов и есть прямой.
 

Vladson

Сильнобухер
Опять цепляетесь к словам не понимая до конца их смысл. Я ещё понимаю что в моём первом сообщении вы могли не понять всей тонкости юмора, но если уж развивать тему, придерусь и я к словам.

Защита от прямого вызова, это один из способов, а не цель. Причём способ реализации защиты
от неавторизованного пользования, от грабинга, хотлинкинга и пр
 

hell0w0rd

Продвинутый новичок
ajax запрос, как и любой другой не должен обращаться к php файлу на прямую. Все через единую точку входа!
 

Oleg Telegin

Новичок
ajax запрос, как и любой другой не должен обращаться к php файлу на прямую. Все через единую точку входа!
Так и есть! Спасибо.
И теперь и директорию закрыть можно Deny from all и константу завожу в index.php, а в начале каждого php-файла проверяю ее существование. И теперь к файлам php можно обратиться, только прийдя с самого сайта, а не пулять в них запросы.
 

hell0w0rd

Продвинутый новичок
Так и есть! Спасибо.
И теперь и директорию закрыть можно Deny from all и константу завожу в index.php, а в начале каждого php-файла проверяю ее существование. И теперь к файлам php можно обратиться, только прийдя с самого сайта, а не пулять в них запросы.
В классах такая константа не нужна.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Oleg Telegin
У людей обычно в таких файлах лежит какой-либо класс, который ну никак не может выполниться, если к нему обратиться напрямую, миную единую точку входа. Нахрена это все надо?
 

Oleg Telegin

Новичок
Есть процедурный подход, есть на основе классов. Есть плюсы, есть минусы. Я классами еще не пользовался.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Oleg Telegin
При всем желании, классы у тебя или функции, не столь важно, все равно без вызова сама функция не выполнится.
 

Vladson

Сильнобухер
Некоторые так пишут, что не только выполнится, но и откроют большой и толстый backdoor
 

Oleg Telegin

Новичок
Ну для примера есть php-файл, который принимает параметры через GET. Берешь и долбишь этот файл запросами напрямую. И будет х...., но не хорошо. )
 

WMix

герр M:)ller
Партнер клуба
можно и большую картинку долбить ;)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Oleg Telegin
Если у тебя есть функция в нем в виде

PHP:
function foo(){
    if(isset($_GET['test'])){ ... }
}
которая не вызывается в нем же напрямую, ничего х... не будет если его будет долбить напрямую.
 
Сверху