在传输部分,建议使用 HTTPS 来实现防窃听等问题。
如果使用了 HTTPS,那么包括 URL、QueryString 等在内的内容,都是防窃听、防篡改的。
不过我们要注意,如果这不表示浏览器窃听不到它,浏览器如果被拿下,照样可以获取传输的内容,攻击者也可能会从浏览器的历史记录中寻找价值。
不过我们做接口似乎不用考虑这个问题,因为接口是程序相互传输数据,而不是使用浏览器人工传输数据。
签名
对发送的数据进行签名,主要是确定数据发送者是可信的,因为只有数据发送方和接收方才有密钥。
一种签名是使用非对称加密算法,将私钥公钥反过来用,不过据我观察,很少有人用这种方法。
另一种方法是使用散列算法,将传送的数据组合起来,然后散列算法,再和密钥混合,再散列算法。
使用第二种方法是要约定很多东西,一般都能想到,只是以下几个容易搞漏: