api主要考虑三个问题:数据被抓包窃取、数据是否被篡改过、重放攻击。
数据被抓包窃取
防止数据窃取,可以对数据进行加密,加密包括,
1.对称加密(DES,AES):钥匙是同一把,
2.非对称加密(RSA):加密和解密需要不同的钥匙,私钥不会在网上传递,RSA非对称加密算法,使用公私钥进行加解密
数据是否被篡改过
这里通过签名的方式来实现。思路就是把 appid+appsecret+timestamp+params 通过信息摘要算法(md5、sha-1、sha-256之类)进行加密,然后会得到加密串,这个加密串就是我们所说的 “签名”(作为请求参数的一部分)。这个签名也会传到后台。
接口签名:对业务数据加一个校验数据,使用(加盐)的MD5算法,计算出一个校验数据,
重放攻击?
这个主要通过timestamp(时间戳)来实现。调用方每次请求的时候,会带上一个timestamp(作为请求参数的一部分),到api提供方接受这个参数,然后再和当前timestamp进行比对,如果之差超过一定时间,就作为请求失效处理。具体时间看具体业务需求。