gpt4 book ai didi

java - 不允许用户通过更改系统日期来更新回溯日期的表

转载 作者:行者123 更新时间:2023-12-01 00:44:38 25 4
gpt4 key购买 nike

我在考虑一个关于分销管理的项目。

假设我有一个中央数据库,其中包含我公司生产的产品的所有销售信息。我定期用来自分销商的新数据填充这个数据库。

分销商的系统上还安装了其他本地数据库。在 Java EE 平台上有一些接口(interface),他们通过这些接口(interface)访问各自的本地数据库。每周经销商都必须将他们的数据库与我们的数据库同步。当分销商与数据库同步时,我们的销售记录会得到更新。

分销商不应显示回溯日期的销售额。但是,假设分销商通过更改他的系统日期来将回溯日期的销售发票添加到他的本地数据库来做到这一点。然后他将他的数据库与我们的数据库同步,并且该销售会反射(reflect)在我们的数据库中。

我作为程序员怎么能阻止他那样做(前提是界面是我做的)。

最佳答案

简短的回答:是的,你可以(并且应该......) - 但你还应该进一步阅读

中等答案:您不应该通过让任何值在不受控制的情况下进入您的数据库来进行同步,但是例如,为每个分发者保留上次同步数据的踪迹并拒绝任何旧数据,除非明确确定为纠正 - 但你仍然应该进一步阅读

长答案:答案将是技术性的,作为程序员,这将是您的责任。但问题出在业务层:你想防止什么?分销商再次发送旧文件或完全不同的东西的错误?分销商故意将错误数据输入您的数据库?外部攻击(来自并发,脚本小子,或者被遗弃的女朋友......)故意发送伪造数据来破坏你的数据库?谁对传入的数据负责?您是否保留了谁(以及如何识别)发送任何数据的痕迹?数据损坏的风险(发生和损坏)是什么?您(或您的公司)可以在保护性对策上投资多少?您必须能够回答以下问题:应该做什么为什么如果不这样做会有什么风险 em> 在考虑如何之前。

如果同步错误数据的风险太高,您甚至可以考虑让您的分销商直接在唯一(集中式)数据库上使用 Web 应用程序的可能性。

如果您已经准备好业务级别问题的答案,并且您知道您确实需要保护您的数据库免受分销商添加旧销售发票的影响,您有两种方法:

  • 您收到分销商数据的导出:只需检查每张发票是否正确,然后再将其复制到您的数据库
  • 您收到离线转储,或使用真正的数据库同步方法:不要在您的真实数据库上同步,而是在每个分销商的副本上同步,并在该副本和您的真实数据库之间进行控制。

如果您的过程可以确保一次只有一个分销商可以同步其基地,那么您可以拥有一个副本。

关于java - 不允许用户通过更改系统日期来更新回溯日期的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24228903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com