如何让我的ajax请求更安全?

时间:2012-07-24 19:49:08

标签: javascript jquery button twitter

像很多人一样,知道javascript函数或方法可以通过浏览器地址栏运行。我想通过什么样的概念来防止这种情况的发生,在用户可能不知道什么必须进入我的函数参数时,它在地址栏中运行并且不起作用!?

我想使用像twitter-follow-button这样的概念。但是,如果人们知道具体的事情(身份,日期等),他们可以通过获得更多的追随者和东西来破解它。我只希望它在点击时运行。

使用程序:PHP,jquery,css 所以这些例子可以基于以上内容。

任何帮助appriciated。 提前谢谢。

3 个答案:

答案 0 :(得分:2)

  

javascript函数或方法可以通过浏览器地址栏运行。我想防止这种情况发生

你不能。

  

我想通过什么样的概念来防止这种情况的发生?用户可能不知道在地址栏中运行时我的函数参数中有什么内容并且不起作用!?

您可以对代码进行模糊处理,但这不会阻止它进行逆向工程或简单地重写。重要的是HTTP请求,而不是生成它们的JS。

  

我想使用像twitter-follow-button这样的概念。但是,如果人们知道具体的事情(身份,日期等),他们可以通过获得更多的追随者和东西来破解它。

您需要在服务器上,验证发出请求的用户是否可以发出请求。在该特定实例中,您可以通过使用当前登录用户的会话数据来确定哪个用户成为关注者。

您还应该实施CSRF protection,以便其他网站无法将用户转发到您的网站。

你不能轻易地阻止Malory给Alice提供一些JavaScript来放入会发出请求的地址栏。那是一场社会工程攻击。浏览器现在正在实施针对它的保护(例如,阻止javascript:地址栏中的uris并使人们使用开发人员工具)。

您可以实施速率限制,以便脚本无法让用户在短时间内关注10个人。

您可以将请求设置为需要对不同子域的完整页面请求,并让该子域将确认请求提取回原始服务器。由于用户必须与来自两个主机名的数据进行交互,因此单个粘贴的脚本将无法完成整个过程(因为存在相同的源策略)。这可能有点过头了。

答案 1 :(得分:0)

我认为您最好的方法是避免将任何变量添加到全局范围。

全局无法访问的内容无法通过页面上的匿名函数,地址栏等访问。如果无法inject脚本进入您的页面,您应该非常安全。

除此之外,我不相信阻止用户在地址栏上运行脚本的方法。

答案 2 :(得分:0)

简而言之,您描述它的方式是不可能的。

相关问题