【问题标题】:Management software with black box database带黑盒数据库的管理软件
【发布时间】:2021-03-15 07:06:44
【问题描述】:

我需要开发一个管理软件及其数据库,但我不能查看数据库中的任何特定数据库条目。该软件仅供公司高管使用,数据库中只会填写机密条目。

创建这样一个“黑盒数据库”的最佳方法是什么,同时确保在出现意外错误时始终可以对其进行调试?由于无法查看数据库条目,因此我看不到一个好的方法来修复由于错误条目或意外行为而发生的错误。

对于这样的任务是否有任何已知的最佳情况?

【问题讨论】:

  • 专门针对虚拟数据库进行开发,并确保所有记录在任何和所有日志中都被混淆......?
  • 这就是我的计划,但是如果由于某种原因输入的条目最终引发任何类型的错误,我该怎么办?我无法找出问题的确切原因。我无法删除错误条目,因为我无法分析条目,也不知道究竟要修复什么。
  • 大量验证期望条目符合某些规则和大量单元测试?如果它在生产中失败,请尝试从混淆的日志文件中找出问题,这有望提供足够的提示?如果没有,调试的唯一方法是查看你不应该做的实际值,我看不出解决这个难题的方法。
  • 我明白了,可悲的是,这正是我担心的问题的答案。如果有人仍然有解决这个问题的神奇方法,我将暂时保留这个问题。非常感谢 deceze。

标签: javascript php database


【解决方案1】:

在我看来,这几乎可以归结为:

  1. 获取有关预期数据和行为的完整规范。
  2. 根据本规范实施大量验证。
  3. 针对模拟生产数据的良好虚拟数据库进行开发,显然具有无意义的值。
  4. 大量单元测试。

理论上,这应该足以开发此类软件,然后由其他人在其他地方运行,您无需担心。 在实践中当然,您可能必须处理可能取决于实际生产数据的错误报告。为了能够“匿名”调试这种情况,您需要投资一个好的日志记录层。日志应该提供足够的信息以允许调试,同时混淆任何和所有实际敏感信息。一个好的验证层可以在这方面提供很大帮助。例如。与此类似的日志条目本身可能很有用:

Failed to foobar because username '●●●●●●●●●●' (string)
of record 670c55b0-177b-0139-f2a7-784f435149ee didn't conform to
rule 42 (/\d+\w+$/).
Stack trace:
   function baz(..) file x.y line 69
   ...

这基本上不会为您提供任何敏感信息,但在最坏的情况下,您至少可以使用它与实际用户交谈并告诉他们系统失败的原因,并指导他们如何更正数据,或者让他们告诉您有关数据的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多