【问题标题】:How to make my ajax requests safer? [closed]如何让我的 ajax 请求更安全? [关闭]
【发布时间】:2012-07-23 04:59:30
【问题描述】:

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

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

使用程序:PHP、jquery、css 所以例子可以基于上面的。

任何帮助appriciated。 提前致谢。

【问题讨论】:

  • 你永远不应该相信来自客户端的任何东西。您应该在服务器上验证这样的操作。开发一些简单的客户端到服务器的关系,你不必担心这个。

标签: javascript jquery button twitter


【解决方案1】:

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

你不能。

我想通过我应该使用什么样的概念来防止这种情况发生,当它在地址栏中运行并且不起作用时,用户可能不知道必须进入我的函数参数!?

您可以混淆代码,但这不会阻止它被逆向工程或简单地重写。重要的是 HTTP 请求,而不是发出请求的 JS。

我想使用一个类似于 twitter-follow-button 的概念。但是,如果人们知道特定的东西(id、日期等),他们可以通过获得更多的追随者和东西来破解它。

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

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

您不能轻易阻止 Malory 向 Alice 提供一些 JavaScript 以将其放入将发出请求的地址栏中。这是一种社会工程攻击。不过,浏览器现在正在实施针对它的保护(例如,从地址栏中阻止 javascript: uris 并让人们改用开发人员工具)。

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

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

【讨论】:

    【解决方案2】:

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

    无法通过页面上的匿名函数、地址栏等访问全局无法访问的内容。如果无法将inject 脚本写入您的页面,那么您应该很安全。

    除此之外,我认为没有办法防止用户在地址栏上运行脚本。

    【讨论】:

      【解决方案3】:

      简而言之,按照你描述的方式,这是不可能的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-02
        • 1970-01-01
        • 2018-06-17
        • 1970-01-01
        • 1970-01-01
        • 2011-01-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多