Intereting Posts
Как вставить несколько данных, используя отношение? Как запустить сценарий оболочки как другой пользователь с PHP на Nginx? Создать переменную в PHP, равную текущему времени минус один час Как правильно выбрать данные из нескольких таблиц с помощью соединений / подзапросов? (РНР-баз данных) Насколько эффективна техника honeypot против спама? Как интегрировать COUNT (*)? Каков наилучший способ хранения переменных конфигурации в PHP? PHP: Как отобразить содержимое текстового файла на моей странице? Установите фокус ввода поля на начало ввода laravel install on bluehost – ошибка 500, несмотря на несколько методов установки оценка задания в php Улавливание ошибки подключения mysql PHP mail () – Как установить приоритет? Как добавить к этому обновлению инструкцию SQL и сделать выпадающий список тоже для нее Несколько слоев обслуживания и транзакции базы данных

Блокируйте прямой доступ к файлам PHP и разрешите json

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

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

$filename = array('index.php'); $basename = basename($_SERVER['REQUEST_URI']); if(!in_array($basename, $filename)) { die('...'); } 

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

Solutions Collecting From Web of "Блокируйте прямой доступ к файлам PHP и разрешите json"

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

X-Requested-With: XmlHTTPRequest

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

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

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