进行证书验证的“urllib2.urlopen”的直接替代品

发布于 2024-11-11 04:50:39 字数 420 浏览 1 评论 0原文

我使用 Python 的 urllib2.urlopen 与 HTTPS 服务器通信,但我现在在 文档 中了解到“HTTPS请求 [使用 urllib2.urlopen] 不会对服务器的证书进行任何验证。”

这对我来说是一个大问题,因为它使我的服务器容易受到 MITM 攻击。

我想要一个可以进行证书验证的 urllib2.urlopen 的直接替代品,这样我就可以将它与我的代码捆绑在一起,并将对 urllib2.urlopen 的所有调用替换为对修改后的 urlopen 函数。

因为这是一个安全问题,所以我更喜欢经过实战测试的安全审核代码,而不是来自互联网的一些随机配方。

I use Python's urllib2.urlopen for talking with HTTPS servers, but I now learned on the documentation that "HTTPS requests [using urllib2.urlopen] do not do any verification of the server’s certificate."

This is a big problem for me, because it leaves my servers open to a MITM attack.

I want a drop-in replacement for urllib2.urlopen that does cert-verification, so I could bundle it with my code and replace all calls to urllib2.urlopen with calls to the modified urlopen function.

Because this is a security issue, I much prefer battle-tested security-audited code rather than some random recipe from the internet.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

倥絔 2024-11-18 04:50:39

幸运的是,情况发生了变化。从 Python 2.7.9 / 3.4.3 开始,默认启用证书验证。请参阅https://www.python.org/dev/peps/pep-0476/< /a> 了解更多详情。

The situation changed, fortunately. Certificate verification is by default enabled from Python 2.7.9 / 3.4.3 on. See https://www.python.org/dev/peps/pep-0476/ for further details.

最冷一天 2024-11-18 04:50:39

看看http://pycurl.sourceforge.net/。它使用 libcurl,它确实很成熟并且经过了良好的测试。

但它并不是“直接”的替代品。 api不一样。

编辑 更好的是,看看@Sven 在他的评论中链接的问题(这也建议使用 pycurl 作为一个选项)。

Have a look at http://pycurl.sourceforge.net/. It uses libcurl which is certainly mature and well tested.

It isn't a "drop in" replacement though. The api is different.

Edit better still, look at the question linked to by @Sven in his comment (which also suggests pycurl as an option).

世界和平 2024-11-18 04:50:39

您可能对此库感兴趣,尽管它不是直接替代品。它使用 sslOpenSSL(具体取决于您使用的 Python 版本)和 httplib

You might be interested in this library, although it's not a drop-in replacement. It uses ssl or OpenSSL, depending on the version of Python you're using, and httplib.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文