У меня есть свой заголовок, нижний колонтитул и другие php файлы, которые обрабатывают запросы ajax в /include/
папка.
Для статического веб-сайта, используется для установки nginx файла по умолчанию на
location ^~ /include/ { deny all; }
И когда кто-то перешел в www.mysite.com/include/header.php
это возвратило a 403 Forbidden
но теперь, так как я использую jQuery, ajax звонит в файлы в /include/
папка, если я установил это =>
location ^~ /include/ { deny all; }
, никакие ajax не наполняют как сохранение или создание отчетов о работах.
есть ли путь, которым я мог запретить доступа к файлам в /include/
папка всем остальным, но делает это доступным только для webroot файлов?
Я попробовал их:
location ^~ /include/ { allow 127.0.0.1; deny all; }
но это не работает.
location ^~ /include/ { allow <my server's ip>; deny all; }
но это не работает.
Я изменил ssh порт от 22 для высказывания, 123; если я ввожу:
location ^~ /include/ { allow 127.0.0.1:123; deny all; }
вместо этого?
Отнесенный учебное руководство для остановки использования горячих ссылок также от: http://www.nginxtips.com/how-to-stop-image-hotlinking-on-nginx/
Согласно этому: Я попробовал,
location ~ .(gif|png|jpe?g)$ {
valid_referers none blocked mysite.com *.mysite.com;
if ($invalid_referer) {
return 403;
}
}
для предотвращения использования горячих ссылок изображений (не работал я предполагаю.) и
location /include/ {
valid_referers none blocked mysite.com *.mysite.com;
if ($invalid_referer) {
return 403;
}
}
предотвратить доступ к /include/
папка.
ни один из них не работал, и да, я заменил mysite к настоящему имени своего веб-сайта там
Я также пытался делать это:
location ^~ /include/ {
valid_referers none blocked mysite.com *.mysite.com;
if ($invalid_referer) {
return 403;
}
}
но, добавление ^~
приведший к странице www.mysite.com/include/header.php
'header.php' в этом случае, будучи downloded; при посещении его в браузере.
Я не использую CMS, просто php файлы, используемые с CSS и js, incl CSS bootstap's. (nginx 1.4.6, mysql, php5-fpm стек)
Любые предложения очень ценятся.
Вызов AJAX выполняет не сервер, а браузер клиента, поэтому только разрешение вашему серверу доступа к этой папке не даст того, что вы от него ожидаете.
Я предлагаю переместить все файлы, вызываемые через AJAX, в отдельную папку (возможно, / ajax
) и оставить то, что вы настроили для папки include
.
В Теоретически файлы внутри / include
никогда не должны напрямую вызываться браузером, но, вероятно, будут включены (представьте себе!) вашим языком сценариев. Вот почему файлы, запрошенные AJAX, скорее всего, должны находиться в отдельной папке.
В качестве альтернативы вы можете переписать запросы AJAX в папку / include
, но я не уверен, что в таких случаях будет применяться отказ
.
Вы можете разрешить доступ на основе заголовка X-Requested-With: XMLHttpRequest
, который большинство фреймворков Javascript добавляют в свои запросы AJAX, но учтите, что любой может подделать такой запрос - вы не можете быть уверены, что это действительно запрос AJAX от вашего веб-приложения, а не кто-то, кто копирует запрос AJAX вручную, используя curl
или подобное.