繁体   English   中英

阻止直接访问PHP文件,仅允许本地javascript访问它

[英]block direct access to PHP file and only allow local javascript to access it

我需要一种方法来阻止对php文件的所有访问,但要允许向其发送xmlhttp请求的javascript文件。 该js文件托管在我的服务器上,并且必须保留在我的服务器上才能正常工作

我有以下

header('Access-Control-Allow-Origin: *');

但是,任何人都可以访问它。

好吧,我认为这不可能。 任何人都可以向您的服务器发出请求,但是您的服务器会选择响应谁以及如何响应请求。 现在,如果您只希望服务器响应您的JS,那么您必须在从JS发出HTTP请求时通知服务器。 如果不公开Javscript文件的身份,服务器无法识别JS,就无法这样做。 但是任何人都可以打开您的JS并阅读它,然后弄清楚您是如何发出请求的并且使用相同的东西。

一种可能的解决方案是,使用标头('Access-Control-Allow-Origin:*')允许每个人向您的服务器发出请求,但在服务器端,在您的数据库中保留允许的域/来源列表可能会或打算在其网站上使用您的JS文件的服务器。 根据收到的AJAX请求,从数据库中检查请求的来源是否被允许,并做出相应的响应。 现在,如果有人尝试通过您的JS以外的任何其他方式请求您的PHP文件,则根据您数据库中的数据,您可以拒绝该请求或接受该请求。 如果允许的用户/网站执行此操作,那么他们将有意识地摆弄自己的数据。

尝试这个:

if (empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) <> 'xmlhttprequest') 
{ 
    die('direct access is not allowed'); 
} 

另外,您始终可以检查诸如$ _SERVER ['HTTP_REFERER']之类的引荐来源网址,以确保只有您域中的脚本才能访问它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM