php - 限制ajax调用来源

标签 php javascript jquery ajax security

我有一个 facebook 应用程序,某些功能需要通过 ajax 运行一些脚本。有没有办法确保只从我的应用程序内部调用脚本?我将 jquery 用于这样的 ajax 调用:

$.post('script.php', {var1: val1, var2: val2}, function(data){...});  

.
script.php 中的代码运行一些 sql 查询并检查所有请求的变量是否通过 ajax 调用传递。
我还应该检查什么,以便脚本只能在从我的应用程序调用而不是通过显式调用时执行?

提前致谢。

最佳答案

很少有方法可以 100% 确定 Ajax 请求是从您的应用程序调用的。如果这是一项关键任务(高安全性)要求,那么我会像保护任何特定 Web 资源一样保护它:

  1. 使用 SSL
  2. 需要登录网关才能建立 session
  3. 在允许请求处理之前检查该 session 的有效性

如果您不想经历建立 session 的麻烦,那么有一些不太确定但仍然非常有用的方法来阻止访问(即因果访问):

检查是否存在两个请求 header :Referrer 和 X-Requested-With。 Referrer 应包含您的基本页面的 URL,而 X-Requested-With 应包含 XMLHttpRequest。这些可以伪造,但需要比直接浏览 URL 的人更加坚定的“攻击者”。

关于php - 限制ajax调用来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8671276/

相关文章:

php - 数据表按数字字段排序

php - 在mysql php中合并具有相同订单id的记录

javascript - 如何在asp上调用JS函数:LinkButton click event

javascript - 在 Jquery 1.8.0 中不使用 CSS 选择器的替代方案是什么?

jquery - 在li文本中查找一些文本

javascript - 如何使用 jQuery.ajax 将此 JSON 转换为在 HTML 中显示,为什么最后是 0?

php - PHP 5.6.30 中不存在 mysqli_connect 和 mysql_connect

php - 将数据放入主 Blade - Laravel

javascript - 如何使用 JavaScript 隐藏/显示 div 标签?

javascript - 如何使用 Javascript 或 jQuery 获取背景颜色?