阻止直接访问由 ajax 函数调用的文件

2022-08-30 13:21:39

我从ajax调用php代码,如下所示:

ajaxRequest.open("GET", "func.php" + queryString, true);

由于这是一个 get 请求,因此任何人都可以通过简单地检查标头来查看它。正在传递的数据并不敏感,但它可能会被滥用,因为获取参数名称也很简单。

如何防止直接访问 http://mysite/func.php 但允许我的ajax页面访问它?

另外,我已经尝试了这里发布的解决方案,但它对我不起作用 - 总是得到“直接访问未被预先发送”消息。


答案 1

大多数 Ajax 请求/框架应设置此特定标头,可用于筛选 Ajax v Non-ajax 请求。我用它来帮助确定许多项目中的响应类型(json / html):

if( isset( $_SERVER['HTTP_X_REQUESTED_WITH'] ) && ( $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' ) )
{
    // allow access....
} else {
    // ignore....
} 

编辑:您可以自己在自己的Ajax请求中添加它,并在javascript代码中使用以下内容:

var xhrobj = new XMLHttpRequest();
xhrobj.setRequestHeader("X-Requested-With", "XMLHttpRequest"); 

答案 2

我使用的是:PHP会话+每次执行请求时发送的哈希值。此哈希是使用服务器端中的某些算法生成的


推荐