【问题标题】:Making AJAX calls secure使 AJAX 调用安全
【发布时间】:2012-07-25 00:06:09
【问题描述】:

如果用户查看我的 JavaScript 文件、复制函数的内容并使用 AJAX 向我的服务器发送请求,会发生什么情况?有没有办法适当地防止这种情况发生?

【问题讨论】:

    标签: javascript ajax


    【解决方案1】:

    防止这种情况的方式与防止任何网络请求的方式没有什么不同。您这样做是为了让您的网站需要某种形式的身份验证(即用户必须登录),并且如果请求未正确验证,则不要执行任何操作。

    通常,当您发出 AJAX 请求时,cookie 也会随请求一起发送,因此您应该能够使用与 AJAX 请求的常规请求相同的身份验证方法。

    【讨论】:

    • 嗯是有道理的。我只是不知道浏览器是否有某种跨域保护。谢谢老兄。
    • 浏览器不允许来自另一个服务器/域的 xmlhttprequest。但是,如果您允许 json-p 请求,则可能会发生这种情况,也可能有人会欺骗浏览器,将 ajax 请求与其他请求一样处理,如前所述。
    【解决方案2】:

    根据 codeka,没有办法阻止某人制作自己的 Ajax 查询,该查询与您在 Javascript 请求中的查询相同。跨域保护不一定会在那里保护您,因为他们可以,如果他们愿意,只需在您网站上的页面上自己在地址栏中输入 Javascript。

    您拥有的唯一保护是验证通过服务器端的 Ajax 查询提供的输入和参数。将每个 PHP 或 Python 或任何响应脚本限制为非常具体的任务,并检查服务器端的输入。如果有问题,以错误响应。

    简而言之,没有办法阻止某人发送请求,但您可以阻止他们在您的服务器上做一些您不希望他们做的事情。

    【讨论】:

    • 这是否意味着永远无法使用 AJAX 创建安全的通用 CRUD 架构?
    【解决方案3】:

    假设您需要某种形式的身份验证:

    我想您可以维护数据库会话以验证请求是否来自真正的用户以进行伪造。使用加密cookies存储session ID,将cookie session ID引用到数据库中验证用户

    【讨论】:

      猜你喜欢
      • 2017-02-11
      • 2013-07-15
      • 1970-01-01
      • 2019-06-26
      • 1970-01-01
      • 1970-01-01
      • 2013-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多