关于网站的数据安全总结
1.风险所在
芒格说过:如果知道我会在哪里死去,那么我就不去那里.我们要明确数据在业务过程中,会在哪些风险点.数据安全,即数据存储,数据传输,数据展示,数据篡改.处理敏感数据的数据安全,就是处理这四种场景下的数据安全.
2.数据存储
对于敏感数据脱敏后存储,方式有二:
其一,采用数据加密
其二,用不可逆加密
2.1.不可逆加密
方式一:md5(密码)
做一次md5加密,可暴力破解,折中办法是做两次md5加密.
方式二:md5(密码+固定盐)
使用固定盐,暴力破解会被发现,没有任何的价值.
方式三:md5(密码+可变盐)
可变盐:选择固定前缀+用户个性化盐.但个性化盐需要存储起来.可以将固定盐写入配置文件,个性化盐存储在数据库中.
可变盐:选择用户名作为seed,基于固定规则生成动态盐,最好动态盐不做存储.比如以用户名的ASCII值,然后进行加和动态生成盐,就不需要存储起来.
具体如何选择不可逆加密,需要根据业务场景来决定.对低安全场景的业务,采用一次md5加密未尝不可.业务场景是目的,技术只是实现场景的手段而已.
2.2.可逆加密
方式一:使用AES对称加密(敏感数据)
方式二:RC4(敏感数据)
等长,数据库不用修改,加密解密速度提升(相比AES),有弱密钥的问题,可以使用128位长.
使用对称加密,必然涉及到秘钥的分发和存储.
一.秘钥存储在专属的加密进程中,通过启动配置前缀生成固定秘钥存在专属加密进程中.
二.秘钥存储服务从配置文件中读取一个盐,然后跟程序中的秘钥一起做运算,生成秘钥,加解密程序拿到秘钥后再做一次运算生成真正的秘钥.
三.调用方用专属的SDK进行通信获取秘钥,然后存储在调用方内存中.
3.数据传输
数据传输过程中的数据安全问题,基本上都发生在网络请求到网关层或反向代理层.
处理方案是在数据传输过程中采用基于HTTPS传输加密或者基于SSL传输加密.此时防止攻击者在数据传输过程中拦截获取数据.
进入机房后或进入服务程序后,我们不会再使用加密传输,基本上都是用明文传输.此时最大的安全隐患是内鬼,只能通过安全红线和流程规范进行预防.
4.数据展示
敏感数据的展示处理,比如快递上的姓名,电话等敏感数据.
此时服务器端需要脱敏打码后展示,防止直接被爬取.
5.数据篡改
在调用微信支付时,如何防止在支付过程中,数据被篡改呢?
我们可以查看微信支付的安全规范:
https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=4_3
一般来说,防止数据在传输过程中被篡改,都采用这种方式.
数字签名
一.双方约定签名规则
md5sum
二.过程:
a.客户端按照约定进行签名
b.服务器端收到数据按照规则生成md5sum值
c.如果客户端和服务器端生成的md5sum一致,表示数据没有篡改.如果不一致,表示数据被篡改,则不做任何处理.