2011-03-08 113 views
3

所以我有一个Django的Web应用程序,我需要添加一个支付模块。将帐户余额安全地存储在数据库中?

基本上用户会预付一定的服务费用,并且随着用户使用服务,这将缓慢减少。我想知道最好的做法是什么?我可以使用Satchmo处理付款,但只需将美元价值存储在数据库中,让我的代码直接与该价值进行交互似乎具有风险。当然,我可以做到这一点,但我想知道是否有一个经过良好测试的解决方案已经在这个问题了?

回答

6

我不知道一个“经过良好测试的解决方案”,但我强烈建议您不要在数据库中存储美元值,并增加或减少该美元值。相反,如果出现任何问题,我建议存储可审计的交易。计算用户帐户中的信贷和借记交易的可用金额,而不是直接存储它。

为了更加安全,您需要确保您的应用程序无法删除任何交易记录。如果出于某种原因无法拒绝相关表的写入权限,请尝试将这些事务复制到另一个数据库(应用程序不会触及)中,因为它们已创建。

+0

这也是。我甚至没有涉及到实施,这个评论比我所做的更重要。您始终需要能够为您的用户提供他/她的交易历史记录。 – David 2011-03-08 18:54:41

+0

其实,这也有助于会计目的。用户也可能知道他们在一段时间内花了多少钱 - 另外还有一点。 – itsnotvalid 2011-03-08 18:55:18

1

我的语言不可知的建议是确保与Web应用程序通信的数据库是只读的;至少对于处理这些账户余额的表格。因此,您可以处理付款,并管理数据库中账户余额的减少,这是您以外的人无法访问的(即未连接到互联网或此Web应用程序)。您可以定期拍摄该数据库的快照并更新与该Web应用程序交互的数据库,以便用户拥有余额的读取副本。这样,即使用户能够修改数据以使其余额增加一百万美元,您也知道您在一个单独的位置有其真正的平衡。基本上,你永远不需要信任Web应用程序的数据 - 这对你的用户来说是纯粹的信息。

+0

+1好的解决方案! – B4NZ41 2012-08-01 17:04:03

相关问题