Заблокируйте прямой доступ к файлам PHP и разрешите json - PullRequest
1 голос
/ 21 апреля 2011

Я пытаюсь заблокировать некоторые файлы с помощью php-скрипта, однако, я хочу, чтобы мои javascript-вызовы ajax разрешали скрипты, я не знаю, возможно ли это вообще, но ..

Чтоя делаю сейчас,

$filename = array('index.php');

$basename = basename($_SERVER['REQUEST_URI']);

if(!in_array($basename, $filename)) {
    die('...');
}

Это заблокирует все файлы, а не index.php, но что если у меня есть login.php, который делает мои вызовы ajax возможными?

1 Ответ

2 голосов
/ 21 апреля 2011

Когда вы отправляете вызов JavaScript AJAX, он добавляет

X-Requested-With: XmlHTTPRequest

К заголовкам HTTP. Так что если вы хотите что-то сделать в случае вызова AJAX, вы можете проверьте что-то вроде этого:

$headers = getallheaders();
if($headers['X-Requested-With') == 'XMLHttpRequest') {
    // ...
}

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

...