Как запретить ajax PHP файлы из браузера - PullRequest
0 голосов
/ 07 июня 2010

На моем WS есть скрипт AJAX. Есть ли способ запретить прямой доступ к бэкенду ajax php? И получить к нему доступ, только если он запускается из моего кода AJAX

Ответы [ 3 ]

2 голосов
/ 07 июня 2010

Вы можете попробовать эвристику (например, проверку HTTP-заголовка X-Requested-With), но НЕ в качестве меры безопасности.Любая такая разница в том, как выглядит запрос, может быть легко продублирована любым, кто действительно хочет.

2 голосов
/ 07 июня 2010

Ответ - нет.

Способ, которым ваши ajax-вызовы обращаются к php-скриптам, такой же прямой, как и любой другой метод.различные способы, такие как требование действительного сеанса, который создается только после входа в систему.Однако, как только пользователь вошел в систему, доступ к бэкенду с помощью сценария AJAX или «напрямую» является честной игрой.Другими словами, вы не можете рассчитывать на то, что сможете отличить ajax-вызов от какого-либо другого вызова на стороне сервера.

Безопасность вашего бэкэнда должна зависеть от чего-то еще.

1 голос
/ 07 июня 2010

На стороне сервера вы можете добавить это в начало ваших внутренних файлов:

if(empty($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
  die("You need to use an AJAX request");
}

Редактировать: Как утверждают другие, это не надежно в качестве меры безопасности.

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