AJAX只能访问

bor*_*ack 9 php ajax jquery

我最近开始用PHP编写大量AJAX支持的脚本,事实上,AJAX调用访问的文件也可以直接使用,如何禁用它?

rob*_*lls 22

你无法可靠地防止这种情况发生.关键是不要考虑有人直接访问此文件作为安全问题 - 计划这是可能的,你将在一个更安全的地方.

有些人可能会推荐看起来像这样(或类似)的代码:

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) 
     && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
    // more code here
}
Run Code Online (Sandbox Code Playgroud)

然而,问题的事实是HTTP标头很容易被欺骗,并且不是保护代码的手段.在我在一个繁忙的网站上进行测试的时候,我注意到这些标题实际上并不是那么可靠.


Sam*_*bee 6

正如其他人在回复中所建议的那样,这是不可能的.这是因为计算机安全的一个支柱原则:你永远不能相信客户.这就是我们验证来自客户端等的所有输入的原因.

而不是试图阻止其他客户访问您的服务,而是花时间编写防御性Web服务.这意味着,确保恶意用户无法通过您的业务逻辑进行注入或其他攻击.例如,确保所有电子邮件都有效,人们不会购买负数美元等物品.

哦,网络服务是开放的事实是一件好事!您正在为用户提供开放式API,这非常简洁!也许不是试图锁定你的社区而是接受它 - 给他们一些关于如何与你的服务接口的文档,他们会创造更多的客户.您可以使用其中一个用户,而不是购买iPhone SDK并花时间学习Objective C.