
폴더 에 Ajax 요청을 처리하는 머리글, 바닥글 및 기타 PHP 파일이 있습니다 /include/
.
정적 웹사이트의 경우 nginx 기본 파일을 다음으로 설정하는 데 사용됩니다.
location ^~ /include/ { deny all; }
그리고 누군가가 그곳에 갔을 www.mysite.com/include/header.php
때403 Forbidden
하지만 지금은 폴더 내부의 파일에 대해 jquery ajax 호출을 사용하기 때문에 /include/
이것을 설정하면 =>
location ^~ /include/ { deny all; }
, 작업 저장이나 보고와 같은 Ajax 작업은 없습니다.
내가 할 수 있는 방법이 있을까?내부 파일에 대한 액세스를 거부합니다.폴더/include/
다른 사람들하지만 해내다웹루트 파일에만 접근 가능?
나는 이것을 시도했다:
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;
}
}
하지만 이 경우 추가하면 ^~
@ 'header.php' 페이지가 다운로드되었습니다. www.mysite.com/include/header.php
브라우저에서 방문할 때.
저는 CMS를 사용하지 않고 부트스트랩을 포함하여 CSS 및 js와 함께 사용되는 일반 PHP 파일만 사용합니다. (nginx 1.4.6, mysql, php5-fpm 스택)
어떤 제안이라도 대단히 감사하겠습니다.
답변1
서버는 AJAX 호출을 수행하는 것이 아니라 클라이언트의 브라우저이므로 해당 폴더에 대한 서버 액세스만 허용하면 예상한 대로 작동하지 않습니다.
내 제안은 AJAX를 통해 호출된 모든 파일을 별도의 폴더( /ajax
아마도)로 옮기고 폴더에 대해 구성한 내용을 그대로 두는 것입니다 include
.
이론적으로 내부 파일은 /include
브라우저에 의해 직접 호출되어서는 안 되지만 스크립트 언어에 의해 포함될 가능성이 높습니다(상상해 보십시오!). 그렇기 때문에 AJAX에서 요청한 파일은 자체 폴더에 있어야 합니다.
대안으로 AJAX 요청을 폴더에 다시 작성할 수 있지만 이러한 경우에도 적용될지는 /include
확실하지 않습니다 .deny
답변2
대부분의 Javascript 프레임워크가 AJAX 요청에 추가하는 헤더를 기반으로 액세스를 허용할 수 있지만 X-Requested-With: XMLHttpRequest
누구나 그러한 요청을 위조할 수 있습니다. AJAX 요청을 복제하는 사람이 아니라 실제로 웹앱에서 오는 AJAX 요청인지 확신할 수 없습니다. 수동으로 사용하거나 curl
이와 유사합니다.