金融类系统研发特点
金融类系统由于和用户隐私、资金紧密关联,研发特殊也显而易见。稍有不慎就可能造成灾难性的后果。
一、信息安全
大部分金融类系统中存储了用户姓名、联系方式、银行账号、账号密码等敏感信息。
开发的时候很容易在不经意间将这些信息泄露出去,设计和开发的时候要特别留心。比如:
1.1 通过URL(包含AJAX请求)传递参数尽量不要带上这些信息,特定场景下也一定要对这些信息进行严格的加密;
1.2 尽量不要再日志里打印敏感信息,特定场景下一定要做掩码处理;
1.3 在页面(前端、后端)中展示要做掩码处理;
1.4 在数据库等存储介质中存储时要做加密处理;
二、资金安全
金融系统经常涉及到扣用户钱或者给用户打款等资金操作,如果重复扣用户钱或者给用户打款,往往造成无法挽回的用户流失、资金损失等后果。
造成这些问题的原因可能是设计不当、代码缺陷、人为误操作(也可以理解为设计问题)。
除了再设计和开发过程中考虑这些问题,也要严格做好设计、编码环节的评审工作。
这里从设计上总结几个注意点:
2.1 是系统间交互,接口提供方要做好幂等性校验,不能让同一笔流水重复流入。并且要提供查询类接口,在接口调用方因网络原因调用失败的时候查询上一次调用结果。
而接口调用方需做好补偿机制。如果因网络原因等原因造成接口调用失败,须先调用查询接口查询上一次调用结果,如果调用成功则不能补偿;
2.2 定时任务,须做好单账户的防并发处理,防止因为人为原因操作重复的资金操作;
2.3 页面请求须从浏览器端、服务器端两端同时做防重复提交;