jQuery AJAX - 限制,安全性,反跨域

时间:2016-11-01 18:03:02

标签: php jquery html ajax

我对jQuery AJAX的安全信息感到困惑。我正在为CMS开发ADD-ON。 PHP文件EXECUTE.PHP有jQuery AJAX调用。 现在我想卖掉我的ADD-ON,这里有一些问题:

  1. 我的ADD-ON将购买两位客户A)John (nice guy), B)Bruce (the hacker)。他们都知道我的koding结构,文件位置,文件内容 - 一切。如果Bruce将AJAX调用更改为John服务器的EXECUTE.PHP文件,该怎么办? Bruce知道CMS已经安装在WWW.DOMAIN-NAME.COM/CMS上,因此他可以怀疑EXECUTE.PHP在John服务器上的位置。是否有可能做到这一点? EXECUTE.PHP文件可以删除数据库中的条目 - 因此Bruce能够删除所有带有"DELETE FROM ... WHERE ID = [1, 2, 3 ..]"的循环的数据库条目吗?是否有可能进行跨域访问(John拥有自己的域名,而Bruce拥有自己的不同域名)?我能做些什么来阻止它?还有其他风险吗?
  2. 当Bruce在John的服务器上调用EXECUTE.PHP并且EXECUTE.PHP文件通过$_SERVER['REQUEST_URI']返回地址时 - 它将返回什么地址。这将是约翰的布鲁斯地址或地址有AJAX电话吗?
  3. 非常感谢您的所有答案和帮助。

2 个答案:

答案 0 :(得分:0)

首先要记住的是,JQuery是客户端。我们无法保护它,因为任何人都可以访问它。可以访问所有逻辑,方法,编码。

对于跨域方法,有两种方法可以解决这个问题。 1. JSONP 2. CORS

尝试看看这个,并使用适当的,而不是公开。

答案 1 :(得分:0)

首先,您的execute.php文件应检查是否有来自当前所在域的任何访问。然后它应该检查并查看访问是否来自具有admin-rights的登录用户(我假设需要修改数据库,或者至少应该需要),并且正在使用的用户名是登录的用户名(并且用户实际登录的用户名)。这可以防止你提到的大部分问题。 可以操纵任何类型的数据操作,最好的解决方案是尽可能使其安全,也许允许在插件的管理界面中选择具有访问权限的用户登录。这样,您就可以确定哪个用户应该有权进行更改。

REQUEST_URI可以伪造,但作为标准,它会显示hacker的IP /域。