将帐户余额安全地存储在数据库中?

时间:2011-03-08 18:45:04

标签: python database django web-applications

所以我有一个Django Web应用程序,我需要添加一个支付模块。

基本上,用户将预付一定数量的服务,并且当用户使用该服务时,这将逐渐减少。我想知道促进这个的最佳做法是什么?我可以使用Satchmo处理付款,但只是将USD值存储在数据库中并让我的代码与该值直接交互似乎有点冒险。当然,我可以做到这一点,但我想知道是否已经有一个经过充分测试的解决方案来解决这个问题?

2 个答案:

答案 0 :(得分:6)

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

为了更加安全,您需要确保您的应用程序无法删除任何交易记录。如果由于某种原因无法拒绝相关表的写入权限,请尝试在创建事务时将事务复制到第二个数据库(应用程序未触及)。

答案 1 :(得分:1)

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