我正在撰写一篇工作文章,并寻找仍然不支持 HSTS的前 500 个网站(按Alexa排名)的列表。这样的清单存在吗?我的 Google 查询没有得到任何有趣的结果。
除了逐个检查所有网站之外,任何人都可以提供一种方法来完成此操作吗?
我正在撰写一篇工作文章,并寻找仍然不支持 HSTS的前 500 个网站(按Alexa排名)的列表。这样的清单存在吗?我的 Google 查询没有得到任何有趣的结果。
除了逐个检查所有网站之外,任何人都可以提供一种方法来完成此操作吗?
假设您已经有一个要检查的以换行符分隔的域名列表,请使用如下脚本,它将列表放入由第一个参数或 stdin 指定的文件中:
#!/bin/bash
while IFS= read -r s; do
curl -sI "https://$s" | grep -qiE "^Strict-Transport-Security:" || echo "$s"
done < "${1:-/dev/stdin}"
exit 0
这将向标准输出输出一个域列表,这些域已启动,但不通过 HTTPS 发送标准 HSTS 标头。这并不意味着某些子域不使用 HSTS,也不意味着所有发送 HSTS 标头的站点都正确使用。检查 HSTS 在语法上是否有效将需要更复杂的正则表达式。
@forest 的 回答很好地涵盖了这一点,所以不要翻新地面,您需要连接到每个站点并检查返回的标头,如果您希望减少发回的数据量,可以使用 HEAD 来完成。
您将需要使用以下链接之一:
发布
贝塔
https://hg.mozilla.org/releases/mozilla-beta/raw-file/tip/security/manager/ssl/nsSTSPreloadList.inc
Chrome 稍微难一些,首先你需要使用这个:
https://omahaproxy.appspot.com/all.json
找到给定版本的哈希,然后加载
https://chromium.googlesource.com/chromium/src/+/哈希/net/http/transport_security_state_static.json?format=TEXT
其中 hash 是您从上一步获得的哈希值。
您需要对结果进行 Base64 解码。