【问题标题】:Is an end-2-end javascript stack secure?end-2-end javascript 堆栈是否安全?
【发布时间】:2011-10-29 06:08:37
【问题描述】:

我想构建一个多租户云应用。我的堆栈是 javascript / json end-2-end:用户在浏览器中输入数据,jquery 将其转换为 json,然后发送到我的 node.js 服务器,该服务器又将其作为 json 存储在 couchdb 中。当获取数据时,json 会反过来。如果用户向这个 json 注入一些东西,那么在上面的堆栈中是否有这个 json 实际被评估的地方?如果是,我需要对其进行消毒。 json 清理的健壮性如何?或者沙盒会有帮助吗?它有多强大?

这是一个多租户环境,会有很多用户和公司的秘密数据。

【问题讨论】:

    标签: javascript jquery json node.js couchdb


    【解决方案1】:

    CajaNode-validator

    祝你好运

    【讨论】:

    • 谢谢。您认为它是否足够安全以保护公司数据,或者 json sanitizers 的世界更多的是启发式和最佳实践的集合,而这些启发式和最佳实践并不总是能防黑客?
    • 我认为 nodejs 还太年轻,不能成为企业标准。但是 JSON 并不是它的弱点,因为 JSON 太简单且非常安全的标准。只有在 JSON 中传递的 html 和 javascript 可能是危险的,您应该考虑与您使用的每种数据类型相关的这一点。如果你想创建真正安全的网站,你应该考虑积极的验证(而不是消极的)。我的意思是你应该决定应用什么,也不要拒绝什么。
    • 即使我使用反向代理,nodejs 是否仍然太冒险?另外,“js inside json”是指只有当我明确期望得到它并正确运行它时?否则它只是一个我从不执行的字符串。
    • 反向代理是个好主意,但它会减慢您的应用程序。这对你来说很重要吗?是的,如果您想要评估数据或将其结果放在值中启用 html 的页面上。
    • 关于gmail hacking的文章也将有助于了解风险和弱点。
    【解决方案2】:

    我建议进行深度防御(即多个重叠的安全机制。Richard 和 Pasha 都提出了很好的建议。

    要做的其他事情是使用CouchDB data validation 功能。你用 Javascript 写了一个validate_doc_update 函数。此函数将针对数据库的每一次 更改运行。该函数可以决定数据是否可以接受。

    验证在 CouchDB 服务器本身中深入运行。因此,如果你有一个好的验证功能,那么根本不可能存储坏数据。

    【讨论】:

      【解决方案3】:

      Node.js 使用 JSON.parse 来评估 JSON 数据。 JSON.parse 使用严格的 JSON 语法,不允许在数据字符串中声明函数。这也意味着数据键必须是双引号字符串,值只能是布尔、数字、字符串、数组或对象。

      【讨论】:

      • 谢谢。我假设这是 nodejs 框架。图书馆呢?是否有任何令人信服的理由让他们执行快速 eval() 快捷方式,或者 nodejs 平台是否为他们进行解析?那么couchdb呢?
      • 我的理解是,JSON.parse (1) 比 eval() 更安全,而且 (2) 更快。如果您担心安全性,我建议您永远不要使用 eval。
      • 每个库都使用 vm 模块在自己的沙箱中执行:nodejs.org/docs/v0.4.11/api/vm.html require() 函数使用 vm 模块。这可以防止模块相互干扰。无需从服务器评估任何内容。
      猜你喜欢
      • 1970-01-01
      • 2012-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-03
      相关资源
      最近更新 更多