gpt4 book ai didi

c - Windows 上的 InternetOpenUrl 函数是否足够安全?如果没有,如何让它更强大?

转载 作者:太空宇宙 更新时间:2023-11-04 03:39:52 25 4
gpt4 key购买 nike

InternetOpenUrl()文档说:

WinINet functions use a simple check against certificates by comparing for matching host names and simple wildcarding rules.

这表明它并没有做太多,并且可以通过例如规避它。伪造自签名证书。

另一方面,KB 182888 "How To Handle Invalid Certificate Authority Error with WinInet"表明 WinInet 函数确实在检查根 CA。

什么是真相?我想要InternetOpenUrl()如果证书无效则失败。或者,如果它没有失败,则以最简单的方式自行验证证书。我该怎么做?

最佳答案

;博士;是的,InternetOpenUrl() 默认检查证书颁发机构。

我做了一个小测试:

#include <cassert>
#include <iostream>
#include <windows.h>
#include <WinInet.h>

int main(int argc, char *argv[])
{
HINTERNET internet = InternetOpenA("Test Agent",
INTERNET_OPEN_TYPE_DIRECT,
NULL,
NULL,
0);
assert(internet != NULL);
char url[] = "https://urlgoeshere";
HINTERNET connection = InternetOpenUrlA(internet,
url,
NULL,
0,
0,
NULL);
std::cout << "error while opening url " << url << " : "
<< GetLastError()
<< " handle: " << connection << std::endl;


return 0;
}

是的,当使用自签名证书时,它会返回错误代码 12045,即 ERROR_INTERNET_INVALID_CA。

关于c - Windows 上的 InternetOpenUrl 函数是否足够安全?如果没有,如何让它更强大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29545544/

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