gpt4 book ai didi

http - 如何以编程方式测试网站是否使用 HTTPS?

转载 作者:可可西里 更新时间:2023-11-01 16:33:18 25 4
gpt4 key购买 nike

我想构建某种脚本来判断网站是否使用 https。

以编程方式确定这一点的方法是什么?我尝试访问我自己的一个域,我知道它没有 https,但服务器仍然给了我一个 200 代码(至少,根据我使用的 Chrome 扩展)。

是否存在某种我可以捕捉到的错误,或者其他一些在站点之间保持一致的信息?

最佳答案

理论上,您应该提前知道是否应该使用 HTTPS。通过这个,我的意思是用户有一部分判断期望对某些站点使用 HTTPS。在现实世界中,走进银行和走进咖啡店时,您通常会有不同的安全期望。您通常不愿意向酒吧后面的人提供与您的银行家相同的详细信息。这同样适用于网络。

也就是说,您确实可以测试是否可以与某个网站建立 HTTPS 连接。问题是无法建立此连接可能意味着以下几点:

  • 该网站根本不支持 HTTPS,
  • 存在暂时的连接问题,
  • 有攻击者阻止您建立该连接。

许多站点会尝试通过重定向将您从 HTTP 升级到 HTTPS,以使用户知道 HTTPS 可用,并希望他们在下次访问该站点时期待它。有些站点甚至会使用 HTTP 严格传输安全 (HSTS) 来强制您在下次访问该站点时记住该升级。如果您可以假设您的第一个连接没有受到影响,这是一个合理的折衷方案。

What is a way of programmatically determining this? I tried visiting one of my own domains that I know does not have https, but the server still gave me a 200 code.

如果您的域没有有效的证书,证书验证应该会失败,并且您根本无法获得任何 HTTP 状态代码作为响应。

我猜想您使用的脚本不会进行任何证书验证,并且可能这些域指向共享托管环境,其中具有相同 IP 地址的其他服务已启用 HTTPS。

您至少应该确保您的脚本正确验证了证书:

  • 您应该能够及时验证证书是否真实,是否由您信任的 CA 颁发,是否有效。 (这通常在 RFC 3820 和 RFC 5820 中指定)
  • 您应该能够验证它对于您要查找的主机名是否有效。 (这通常在 RFC 2818 和 RFC 6125 中指定。)

并非所有 SSL/TLS 库都默认启用此功能(尤其是第二点)。

我不确定您的脚本使用了什么或者您提到的扩展名有什么作用。例如,如果您正在使用 curl,请确保您没有使用 -k--insecure,并且您正在使用wget,确保您没有使用--no-check-certificate。如果你正在使用 libcurl,你应该确保你是 using the VERIFYPEER and VERIFYHOST properly .如果这不是您正在使用的,请在其他实现中寻找类似的选项,并且不要忽略浏览器警告。

关于http - 如何以编程方式测试网站是否使用 HTTPS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28909015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com