15.3 Content-MD5:实体校验

来源:互联网 发布:如何编写小软件 编辑:程序博客网 时间:2024/06/05 16:54
  • 尽管 HTTP 通常都是在像 TCP/IP 这样的可靠传输协议之上实现的,但仍有很多因素会导致报文的一部分在传输过程中被修改,比如有不兼容的转码代理,或者中间代理有误,等等。
  • 为检测实体主体的数据是否被不经意(或不希望有)地修改,发送方可以在生成初始的主体时,生成一个数据的校验和,这样接收方就可以通过检查这个校验和来捕获所有意外的实体修改了。当然,这种方法对同时替换报文主体和摘要首部的恶意攻击无效。这只是为了检测不经意的修改。对付恶意篡改,需要使用别的机制,比如摘要认证。
  • 服务器使用 Content-MD5 首部发送对实体主体运行 MD5 算法的结果。只有产生响应的原始服务器可以计算并发送 Content-MD5 首部。中间代理和缓存不应当修改或添加这个首部,否则就会与验证端到端完整性的这个最终目的相冲突。
  • Content-MD5 首部是在对内容做了所有需要的内容编码之后,还没有做任何传输编码之前,计算出来的。为了验证报文的完整性,客户端必须先进行传输编码的解码,然后计算所得到的未进行传输编码的实体主体的 MD5。
  • 举例:如果一份文档使用 gzip 算法进 行压缩,然后用分块编码发送,那么就对整个经 gzip 压缩的主体进行 MD5 计算。
  • 除了检查报文的完整性之外,MD5 还可以当作散列表的关键字,用来快速定位文档并消除不必要的重复内容存储。除了这些可能的用法,一般不常用到 Content-MD5 首部。
  • 作为对 HTTP 的扩展,在 IETF 的草案中提出了其他一些摘要算法。这些扩展建议增加新的 Want-Digest 首部,它允许客户端说明期望响应中使用的摘要类型,并使用质量值来建议多种摘要算法并说明优先顺序。
原创粉丝点击