Запрет загрузки файла .php за пределы страницы запроса jQuery - PullRequest
0 голосов
/ 11 октября 2009

У меня есть страница, которая загружается на другую страницу с помощью jQuery. Я хотел знать, возможно ли каким-либо образом заблокировать прямой доступ к той странице, которая загружается на другой странице.

Ответы [ 3 ]

2 голосов
/ 11 октября 2009

Вы можете попробовать добавить какое-то волшебное значение в ваш файл get / post или cookie. Затем проверьте это значение в начале вашей страницы и верните страницу с ошибкой, если она отсутствует.

Однако , это НЕ помешает некоторым пользователям сделать именно это. если они отлаживают ваши запросы, например, с помощью Firebug, они могут повторить запрос с этим магическим номером.

0 голосов
/ 11 октября 2009

Цитата Эран Гальперин из аналогичного обсуждения

Как уже говорили другие, запрос Ajax может быть эмулированным, создавая правильное заголовки. Если вы хотите иметь базовый проверьте, является ли запрос Ajax запрос вы можете использовать:

if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
 //Request identified as ajax request
}

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

Пожалуйста, примите этот ответ Джереми Рутен также во внимание:

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

Почему ты так хочешь?

Если это потому, что код PHP не очень безопасный, сделайте код PHP более безопасный. (Например, если ваш AJAX передает идентификатор пользователя в файл PHP, написать код в файле PHP, чтобы сделать уверен, что это правильный идентификатор пользователя.)

Более умные мысли в обсуждении, связанном выше.

0 голосов
/ 11 октября 2009

Вы не можете блокировать его на 100% - запросы от jQuery являются обычными запросами браузера, поэтому самое большее, что вы можете сделать, это предотвратить внешние ссылки и случайный доступ (тот, кто попытается полностью дублировать HTTP-запрос, все равно будет может попасть на страницу; нет пути к этому).

Вы можете отключить внешние ссылки, проверив заголовок HTTP "referer" и убедившись, что ссылающаяся страница принадлежит вам.

Вы также можете проверить, поступает ли конкретный запрос от jQuery к браузеру, проверив заголовок «X-Requested-With» - jQuery добавляет этот заголовок и заполняет его значением «XMLHttpRequest»; обычный запрос браузера не имеет такого заголовка.

Вы также можете настроить систему проверки с помощью файлов cookie, маркеров с истекающим сроком действия, которые должны быть частью запроса, и т. Д., Но это намного больше работы и (я думаю) излишнее - если кто-то решил получить доступ к странице напрямую и могут обойти фильтрацию заголовков HTTP, они также могут определить ваши токены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...