HTTP 标头 |仅公开密钥引脚报告
HTTP Public-Key-Pins-Report-Only是一个响应标头,如果发生任何 pinning 违规,它将向标头中指定的报告 uri发送报告。
但是,与 Public-Key-Pins 不同,它仍然允许浏览器连接到服务器,并且如果违反了 pinning,则不会在屏幕上打印任何错误消息。
在阅读本文之前,您必须阅读 HTTP Public-Key-Pins 文章。
Header type: Response header
Forbidden header name: no
句法
Public-Key-Pins-Report-Only: pin - sha256 = "pin - value";
max - age = expire - time;
includeSubDomains;
report - uri = "uri"
指令:
- 销-sha256 =“销-值”
该引脚用于为不同的公钥指定多个引脚。将来我们还可以使用除 SHA-256 之外的其他哈希算法。 - 最大年龄 = 过期时间
此指令未在 Public-Key-Pins-Report-Only 标头中使用,它将被用户代理忽略,也不会被缓存。 - 包括子域
此引脚指定站点的规则也适用于站点的子域。此参数是可选的。 - 报告 – uri = “uri”
此 pin 发送 pin 验证失败的报告。该参数也是可选的。
例子:
Public-Key-Pins-Report-Only:
pin-sha256 = "cUPcTAZWKaASuYWhhneY3oBAkE3h2+soZS7sWs=";
pin-sha256 = "M8HztCzM3elS5P4hhyBNf6lHkmjAHKhpGPWE=";
includeSubDomains;
report-uri = "https://www.geeksforgeeks.org/hpkp-report"
在本例中,First pin pin-sha256 = “cUPcTAZWKaASuYWhhneY3oBAkE3h2+soZS7sWs=”是生产环境中使用的服务器公钥。
第二个引脚pin-sha256 = “M8HztCzM3elS5P4hhyBNf6lHkmjAHKhpGPWE=”用作备份密钥。
第三个 pin includeSubDomains表示该密钥对所有子域都有效。
最后一个 pin report-uri = “https://www.geeksforgeeks.org/hpkp-report”解释了在哪里报告 pin 验证失败。
浏览器兼容性:
- 谷歌浏览器
- 歌剧
- 火狐
- IE浏览器
- 微软边缘
- 苹果浏览器