【问题标题】:Very Confused (And Worried) about security with JSON and Javascript对 JSON 和 Javascript 的安全性感到非常困惑(和担心)
【发布时间】:2013-01-17 00:50:04
【问题描述】:

一段时间以来,我一直在尝试对这个主题进行一些研究,甚至引用了以下 Stack Overflow 线程:

Javascript Hijacking - When and How Much Should I Worry

JSON Security Best Practices

但我的基本问题是这个。

当我构建 Web 应用程序时,我会使用 Fiddler、Chrome 开发人员工具、Firebug 等工具。我会即时更改内容以进行测试。我什至可以使用 fiddler 来更改发送到服务器的数据。

是什么阻止了其他人打开我的网页并这样做?如果用户只需按 F12 并打开 Chrome 开发者工具,然后更改通过网络发送的数据,那么世界上所有的 jQuery 验证都是无用的,对吧?

我在这个领域还是比较新的,这让我非常担心,因为我看到“开放”协议变得越来越普遍。我还不了解 SSL(这在我要开始研究的事情清单上),所以也许这就是答案,我只是还没有深入挖掘。但是在操纵我的页面方面的灵活性水平似乎非常极端 - 这让我非常担心恶意者会做什么。

【问题讨论】:

  • 您甚至不需要劫持页面,我可以在 linux 上打开命令行并将任何内容提交到您的服务器。需要在服务器上进行验证。

标签: javascript json security


【解决方案1】:

Javascript 不会成为您抵御黑客的唯一防线,事实上它根本不应该用于安全。客户端代码可用于验证表单输入,以便尝试使用页面的用户可以有更快的响应时间,并且页面运行良好。任何试图破解您的页面的人都不会关心您的页面是否有效。无论如何,进入您服务器的所有内容都应该经过验证,并且永远不要认为是安全的。

【讨论】:

    【解决方案2】:

    验证应该始终发生在服务器端,客户端验证只有为用户提供更方便的体验才有价值。您永远不能相信用户不会最终操纵数据。 (Javascript 是客户端)

    接下来,如果您想保护您的服务,以便只有 user1 可以编辑 user1 的个人资料,您需要使用 OAuth(或类似协议)对 JSON 请求进行签名。

    【讨论】:

      【解决方案3】:

      您必须假设客户端是恶意的——使用 SSL 根本无法阻止这一点。所有数据验证和授权检查都需要在服务器端完成。

      【讨论】:

        【解决方案4】:

        简而言之,JavaScript 的安全性基于受信任的服务器。如果您始终信任服务器发送给您的代码,那么它应该是安全的。第三方(如广告供应商)不可能从包含它的域中获取数据。

        如果服务器还向您发送用户生成的内容,尤其是用户生成的代码,那么您就有潜在的安全问题。这就是 XSS 攻击的重点(在受信任的环境中运行恶意脚本)。

        客户端验证应侧重于易用性,使其易于纠正错误或指导用户以免犯错误。服务器应始终进行验证,但要进行更严格的验证。

        【讨论】:

          【解决方案5】:

          是的,没有什么可以阻止任何人干扰从浏览器发送到您的服务器的数据,这就是您不应该信任它的原因
          始终检查用户数据的真实性和有效性

          您还可以使用它检查和干扰 google 和 microsoft 等大型网站发回的数据,您可能会有所了解。

          【讨论】:

            【解决方案6】:

            您的担忧确实是有道理的。这就是为什么您应该始终验证服务器上的所有内容。客户端验证只能用于 UX。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-05-13
              • 2013-11-05
              • 1970-01-01
              • 2020-07-19
              • 1970-01-01
              • 2017-06-05
              • 1970-01-01
              相关资源
              最近更新 更多