谈谈接口开发-HTTPS 和签名

作者:vkvi 来源:千一网络(原创) 日期:2017-3-9

在传输部分,建议使用 HTTPS 来实现防窃听等问题。

如果使用了 HTTPS,那么包括 URL、QueryString 等在内的内容,都是防窃听、防篡改的。

不过我们要注意,如果这不表示浏览器窃听不到它,浏览器如果被拿下,照样可以获取传输的内容,攻击者也可能会从浏览器的历史记录中寻找价值。

不过我们做接口似乎不用考虑这个问题,因为接口是程序相互传输数据,而不是使用浏览器人工传输数据。

请参见 DV SSL、OV SSL、EV SSL 区别

签名

对发送的数据进行签名,主要是确定数据发送者是可信的,因为只有数据发送方和接收方才有密钥。

一种签名是使用非对称加密算法,将私钥公钥反过来用,不过据我观察,很少有人用这种方法。

另一种方法是使用散列算法,将传送的数据组合起来,然后散列算法,再和密钥混合,再散列算法。

使用第二种方法是要约定很多东西,一般都能想到,只是以下几个容易搞漏:

  • 数据组合时的排序,是按 ASCII 还是按 0-9aA-zZ
  • 为防止使用过期数据,往往还有 timestamp,那么 timestamp 是用 DateTime 格式还是 Ticks?如果是 DateTime 格式那么转换成字符串是哪种格式?如果是 Ticks 那么是从什么时候开始,细化到什么程度。
  • DateTime、Decimal 等类型拼接成字符串时以什么格式拼接。
  • 散列算法的结果是大写还是小写?
  • 散列算法的结果中含不含“-”。

你前面那位网友看了:C# 方法-参数

▲▲▲嘿,欢迎转载传播本站原创文章,尽量保留来源噢。▲▲▲

文章评论
赞助商们
vkvi
vkvi

作者简介: vkvi,致力于 .NET Web 开发、移动开发的技术推广,在 .NET、SQL Server、Windows Server 等方面有深入研究和丰富经验,10 年间共计撰写文章 4000 余篇。 主持金融、国土、农业、电商等多个行业项目执行, 推行“技术提升生产力、人心决定成功率”的管理理论。 联系他