我有一个 facebook 应用程序,某些功能需要通过 ajax 运行一些脚本。有没有办法确保只从我的应用程序内部调用脚本?我将 jquery 用于这样的 ajax 调用:
$.post('script.php', {var1: val1, var2: val2}, function(data){...});
.
script.php 中的代码运行一些 sql 查询并检查所有请求的变量是否通过 ajax 调用传递。
我还应该检查什么,以便脚本只能在从我的应用程序调用而不是通过显式调用时执行?
提前致谢。
最佳答案
很少有方法可以 100% 确定 Ajax 请求是从您的应用程序调用的。如果这是一项关键任务(高安全性)要求,那么我会像保护任何特定 Web 资源一样保护它:
- 使用 SSL
- 需要登录网关才能建立 session
- 在允许请求处理之前检查该 session 的有效性
如果您不想经历建立 session 的麻烦,那么有一些不太确定但仍然非常有用的方法来阻止访问(即因果访问):
检查是否存在两个请求 header :Referrer 和 X-Requested-With。 Referrer 应包含您的基本页面的 URL,而 X-Requested-With 应包含 XMLHttpRequest。这些可以伪造,但需要比直接浏览 URL 的人更加坚定的“攻击者”。
关于php - 限制ajax调用来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8671276/