📜  HTTP 标头 |公钥引脚(1)

📅  最后修改于: 2023-12-03 14:42:00.291000             🧑  作者: Mango

HTTP 标头 |公钥引脚

HTTP 标头(HTTP headers)是在 HTTP 请求和响应消息中传递附加信息的一种方法。 它们传递的信息可以用于调整服务器和客户端的行为,以达到最佳的服务质量和性能。公钥引脚(Public Key Pinning)是一种安全机制,在 HTTPS连接中,强制客户端验证服务器公钥的有效性,以防止中间人攻击和 SSL欺骗。

HTTP 标头

HTTP 请求和响应消息中的标头是以 键-值对 形式呈现的。请求标头传递了客户端的信息和所需的资源,而响应标头则传递了服务器的信息和返回的资源。

以下是一些常见的 HTTP 请求标头:

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299
Accept-Language: en-US,en;q=0.8
Referer: https://www.google.com/

这些标头传递了以下信息:

  • User-Agent: 客户端使用的浏览器和操作系统的信息。
  • Accept-Language: 指定首选语言的规范,用于告诉服务器所需的语言。
  • Referer: 告诉服务器该请求是从哪里来的,并有可能包含一些额外的上下文信息。

以下是一些常见的 HTTP 响应标头:

Content-Type: text/html; charset=UTF-8
Content-Length: 287
Last-Modified: Wed, 21 Oct 2015 07:28:00 GMT

这些标头传递了以下信息:

  • Content-Type: 返回资源的 MIME 类型。
  • Content-Length: 返回资源的字节数。
  • Last-Modified: 返回资源的最后修改时间。

HTTP 标头非常灵活,可以根据需要添加或修改标头。但是,必须谨慎,不应添加不必要的标头,因为它们会增加响应的大小,从而导致更慢的加载时间。

公钥引脚

公钥引脚是一种安全机制,可以强制客户端验证服务器公钥的有效性。 公钥引脚可以帮助防止中间人攻击和 SSL欺骗。

公钥引脚是通过将公钥指纹添加到响应标头中来实现的。 一旦客户端接收到公钥引脚,它将只接受来自指定站点的公钥。 这可确保客户端连接到您的服务器,而不是连接到中间人或攻击者。

以下是示例公钥引脚响应标头:

Public-Key-Pins: max-age=2592000; pin-sha256="base64=="; pin-sha256="base64=="

这些标头使客户端只接受 pin-sha256 值与指定公钥 SHA256 摘要相匹配的证书。 max-age参数指定引脚的有效期,以秒为单位。

公钥引脚是一个强大的安全机制,但它需要被谨慎使用。 只有在您确实需要客户端始终连接到您的服务器时,才应使用公钥引脚。