虽然https在传输层已经保证了数据传输的完整性(篡改、窃取和冒充)即端到端数据传输的安全性,但是用户网络环境总是复杂的,避免不了一些在传输前、传输后或者中间人被篡改的可能性,所以业务层需要摘要算法进行数字签名,如MD5、SHA。
Api用MD5(secret+参数+时间戳) 防止重放,避免不必要的攻击。理论上https是可以防止重放的。TLS通过为每个连接到处一组新秘钥并为每个记录分配唯一的序列号来保证加密流是不可重放的。这个防止攻击者复制这些记录并在另一个连接上重放这些记录,因为加密密钥不匹配。在同一个连接重放这些记录也不起作用,因为序列号不匹配,并且记录将被拒绝。
MD5(secret+参数+时间戳)提高恶意调用的成本
万一证书被猫腻了或者dns被劫持,进行业务层的数据校验显得更安全和严谨。
Client---https---Load Balance---http---http sever,链路复杂,业务层做数字签名更安全和严谨。