在用户财务虚拟账户上面怎么才能最大程度防止被黑客篡改数据?

2013-03-07 14:48:30 +08:00
 asing
两台服务器,A跑webB跑mysql,现在做的是web端请求mysql只能从A机IP请求。

用户财务虚拟帐号设计了几个表
充值流水表
流水id,充值方式,充值方式流水id,充值金额,用户id
个人账户表
用户id,充值金额,显示金额

简单解释下
充值方式是PP和信用卡,货币单位都是USD,所以在个人账户表中会存在两个金额
例如个人充值100USD,需考虑到汇率损失、充值手续费等因素,个人显示金额可能是95USD


假设最恶劣情况
黑客侵入篡改充值金额,显示金额,立即下单购买商品

php程序和数据库要怎样设计才能保证数据准确性唯一性,也好进行排查?
3111 次点击
所在节点    程序员
4 条回复
qiuai
2013-03-07 15:43:23 +08:00
可以把金额加盐再存储一次.消费前进行对比.
nichan
2013-03-07 15:49:06 +08:00
@qiuai 如果加密存储数字的话,条件查询的时候应该怎么办?一直被这个问题困扰……
qiuai
2013-03-07 19:04:35 +08:00
@nichan 表1存储金额.表2里放加密后的金额,这个加密可以反向解密.但是有一个特殊的盐在里面.
然后消费和查询的时候,使用表1里的金额,但是牵扯到消费的时候,可以先去与表2对比一下.一致以后再去消费.

或者你可以对金额的存储做一下简单的加密.让黑客找不到金额到底是哪个.呵呵,办法是想出来的嘛~
enj0y
2013-03-08 03:57:21 +08:00
方案:
1.对金额加密验证,但算法的不可逆性需要你自己斟酌,
最佳的算法:有cryptcheck(var amount,var hashcrypted){return false||true;},但没有encrypt(var amount){return str;}
2.定时作业比对金额较上次变动(增加)与此用户相应的充值转账流水记录,如有必要可以调用PP/CreditCard 日志接口,如果发现账户异常直接冻结用户所有操作权限通知管理审查,但需要注意任务不要影响主业务。
3.强制用户实名验证,遇到紧急情况也有据可查。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/62226

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX