【问题标题】:How dangerous is it to store JSON data in a database?将 JSON 数据存储在数据库中有多危险?
【发布时间】:2011-03-15 08:33:00
【问题描述】:

我需要一种机制来存储在客户端 javascript 中创建的复杂数据结构。我一直在考虑使用 stringify 方法将 javascript 对象转换为字符串,将其存储在数据库中,然后将其拉回并使用反向解析方法将 javascript 对象返回给我。

这只是一个坏主意还是可以安全地完成?如果可以,我应该确保避免哪些陷阱?还是我应该想出自己的方法来完成这个?

【问题讨论】:

  • 不确定您可以从 javascript 访问哪种形式的数据库。但是当 Web 应用程序的 javascript 变得如此复杂以至于需要数据库时,我会得到各种各样的“我对此有一种不好的感觉”......
  • 是的,我知道你的意思。不幸的是,我 100% 确定我们不知道我们需要存储的所有数据片段,因此需要某种灵活的数据存储方法来排除严格的字段和表格。而且我有 90% 的把握,我永远不必查询这些数据。

标签: javascript security json xss


【解决方案1】:

可以做到,我做到了。它和您的数据库一样安全。

唯一的缺点是几乎不可能在查询中使用存储的数据。接下来,您可能会希望将数据存储为表格字段以启用过滤和排序等。

由于数据是用户创建的,请确保您使用安全的方法插入数据以保护自己免受注入攻击(不要盲目地将数据连接到查询字符串中)。

【讨论】:

  • +1 指出对任何一种正常形式的可怕、可怕的违反......但有时必须做的事情必须做:-/
  • 为什么会违反正常形式?如果您使用它来保存应用程序的状态,那么您实际上并没有使用它来存储数据,而是存储会话状态(就像操作系统的休眠/睡眠一样),为什么会出错?我同意这可能有点小题大做,但无需立即假设,是吗?.. 答案没有错...
【解决方案2】:

只要不使用eval反序列化就可以了。

【讨论】:

  • 选择答案只是因为它可能是需要记住的更重要的一点。
【解决方案3】:

因为您使用的是数据库,这意味着您需要一种服务器端语言来与数据库进行通信。使用大多数服务器端语言,您拥有的任何数据都可以轻松地从 json 转换为 json。

我无法想象一个合适的用例,除非你有大量的 javascript,它需要非常高效,并且你已经用尽了所有其他可能性,例如缓存、查询优化等......

这样做的另一个缺点是您无法轻松查询数据库中的数据,当您想要完成任何类型的报告时,这总是很好的。 如果你的 json 结构发生变化怎么办?您会更新数据库中的所有脚本吗?还是会强迫自己去应对解析代码的变化?

结论

恕我直言,这样做并不危险,但它几乎没有留下可管理性和未来更新的空间。

【讨论】:

  • 用例是该项目将不断要求每周至少添加四次具有广泛不同功能和数据的新页面。我无法预测需要存储的所有数据片段,从现在开始每周四次重新编译和重新部署项目,直到世界末日听起来也不是一个好主意。通过将大部分功能代码放在事物的客户端,这些页面可以“即时”添加和更改。
  • 你的观点很好,它立即使我的所有论点无效。听起来像一个令人兴奋的场景:-)
  • 谢谢。当我发布我之前的评论时,我处于编码模式,现在看它,我认为我没有传达出我想要的语气。抱歉,如果它以某种方式粗鲁。 :) 感谢您的意见!
  • 不需要道歉,伙计!这是完全公平的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-24
  • 2023-03-05
  • 2023-04-07
  • 1970-01-01
  • 2020-01-15
  • 1970-01-01
相关资源
最近更新 更多