【问题标题】:Securely storing account balances in a database?将账户余额安全地存储在数据库中?
【发布时间】:2011-07-11 08:19:28
【问题描述】:

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

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

【问题讨论】:

    标签: python database django web-applications


    【解决方案1】:

    我不知道您所说的“经过充分测试的解决方案”,但我强烈警告不要仅在数据库中存储美元价值并增加或减少该美元价值。相反,我建议存储可以在出现任何问题时进行审计的交易。计算用户帐户中贷记和借记交易的可用金额,而不是直接存储。

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

    【讨论】:

    • 这个也是。我什至没有谈到实施,这个评论比我做的评论更重要。您始终需要能够向您的用户提供他/她的交易历史记录。
    • 实际上这也有助于会计目的。用户可能还知道他们随着时间的推移花费了多少 - 另一个优点。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-06-24
      • 2014-08-27
      • 2012-04-07
      • 2011-09-14
      • 2011-05-21
      • 2017-03-06
      • 1970-01-01
      • 2012-03-28
      • 2018-01-05
      相关资源
      最近更新 更多