我使用Python的urllib2.urlopen
与HTTPS服务器交谈,但我现在在documentation上了解到“HTTPS请求[使用urllib2.urlopen
]不会对服务器的证书进行任何验证。 “
这对我来说是个大问题,因为它会让我的服务器对MITM攻击开放。
我希望直接替换urllib2.urlopen
进行证书验证,因此我可以将其与我的代码捆绑在一起,并通过调用修改后的urllib2.urlopen
替换所有对urlopen
的调用功能
因为这是一个安全问题,所以我更喜欢经过实战检验的安全审核代码,而不是来自互联网的随机配方。
答案 0 :(得分:2)
幸运的是,情况发生了变化。默认情况下,从Python 2.7.9 / 3.4.3启用证书验证。有关详细信息,请参阅https://www.python.org/dev/peps/pep-0476/。
答案 1 :(得分:1)
看看http://pycurl.sourceforge.net/。它使用了libcurl,它肯定是成熟且经过充分测试的。
尽管如此,这并不是“下降”的替代品。 api是不同的。
编辑更好,在他的评论中查看@Sven链接的问题(也建议将pycurl作为选项)。
答案 2 :(得分:1)
您可能对this library感兴趣,虽然它不是替代品。它使用ssl
或OpenSSL
,具体取决于您使用的Python版本和httplib
。