我是一个mongodb系列"用户"我想在其中添加一个新字段" wallet_amount"当用户在钱包里加钱时。现在在用户注册时,我试图插入这样的文件
db.users.insert( { email: "test@test.com", wallet_amount: 0 } )
这是否是正确的方法,或者有可能会产生一些安全漏洞,因为我将wallet_amount默认值传递为0? 或者,只有在用户在钱包中加钱时才应插入wallet_amount。
答案 0 :(得分:1)
理论上,对于您是在用户创建时还是在稍后阶段设置初始金额,没有安全隐患。
但是,您作为更一般的安全问题所面临的是每次您对users表有任何查询,您需要对其进行三重检查以确保无法改变wallet_amount不正确。任何针对此表编码的开发人员都会触及可能非常敏感的数据。
为了减轻这种影响,如果您正在处理这样的敏感字段:
这意味着您可以将敏感数据与用户表分离,并允许您隔离域中需要额外关注的部分。
如果您想更进一步,请考虑不要存储钱包金额。非常安全的财务系统的一种常见方法是实际存储分类帐,它是每个事务的不可变记录。在您的情况下,它可能看起来像:
等。然后,您可以实际设置数据库,以便永远不会改变任何数据,只需在分类帐中添加更多行。可以使用缓存来跟踪当前余额,但始终可以通过运行分类帐项来重新创建。这可能对您的方案来说有点过分,但可以提供额外的保护层,因为您基本上禁止任何人随意更改钱包中的内容,他们只能添加事务(这样可以更轻松地发现可疑行为或模式,并跟踪钱移动的地方)。