cc攻击防御_服务器托管高防_优惠券
黑洞
国内DDoS防御_香港高防IP防护DDoS攻击-寒冰互联
寒冰云联
2021-11-17 15:11

所有编程语言实现都无法检查证书是否被吊销。

如今,Web开发人员依赖于各种第三方API。例如,这些API允许您接受信用卡付款、将社交网络与您的网站集成或清除CDN的缓存。HTTPS协议用于保护与API服务器的连接。但是,如果您的web应用程序未验证TLS证书,恶意人员可能会窃取您的密码或您客户的信用卡号码。

badsl.com网站包含其他可能对测试web应用程序有用的测试用例。

新的Python版本应该可以解决TLS验证问题,但有一些警告。如果您使用Python 2.7.9或更高版本,默认情况下将验证证书:

对于Python,情况更为复杂,文档记录也更糟糕。最好的解决方案是升级到3.4.3和2.7.9或更高版本,并始终使用上下文参数。

如果您不验证证书,攻击者可以伪装成API服务器,截获双向发送的数据,甚至返回API服务器从未发送给您的错误消息。Martin Georgiev等人在《世界上最危险的代码:在非浏览器软件中验证SSL证书》一文中讨论了这种攻击。作者发现,一些用Java和PHP编写的API客户端库无法正确验证证书,因此它们容易受到攻击。作者使用自签名证书和属于另一个域名的有效证书测试了这些客户端库。他们认为反直觉SSL API(例如,CURL中的CurLoptTysSLVRIFIFY主机)和不安全的SSL库(PHP中的FSOCKOPEN函数)是问题的根源。如果您通过HTTPS传输任何个人或财务数据,请确保TLS证书被正确地验证。两年前,IOActive测试了40款手机银行应用程序,发现其中40%易受MITM攻击。汉诺威莱布尼茨大学和马尔堡大学菲利普斯分校的另一组研究人员发现,8%的流行Android应用程序无法验证证书。当您使用公共WiFi热点时,针对这些移动应用的被动MITM攻击是非常真实的。如果web服务器访问第三方API,也可能发生攻击。

让我们使用测试HTTPS服务器(在编写本文时工作),它会在任何现代浏览器中触发安全错误:

编写您自己的吊销检查代码是不现实的;你需要一个熟练的密码专家来完成这项任务。PHP有CURLOPT_CRLFILE选项,但您必须下载CRL文件并自己验证其签名。PHP中不支持OCSP装订。Go仅在response.TLS.OCSPResponse中返回原始装订的OCSP响应。从这些原语构建撤销检查功能需要做大量工作。

这些选项在cURL 7.10中已设置为正确的值,但请为旧版本明确设置这些选项。

测试脚本使用默认TLS配置连接到每个服务器。您可以在您的安装上运行这些脚本,看看是否有问题。

推荐的PHP TLS配置

当您使用流函数(fsockopen、fopen、stream\u socket\u client、stream\u socket\u enable\u crypto或file\u get\u contents)时,PHP 5.5及以下版本中的TLS实现被破坏。您应该改用cURL函数,并尽可能升级到PHP5.6。请注意,即使在使用cURL时,网络病毒,PHP5.5也允许使用过时的RC4密码。

PHP5.5或更低版本中的HTTPS流不安全,不应使用。您可以通过将"verify_peer"上下文选项设置为TRUE来拒绝自签名证书,但攻击者仍然可以使用为另一个域颁发的证书。一些证书颁发机构现在提供免费的DV证书,因此攻击者不会因此付出任何代价。

Twitter为其API推荐了另一种方法:根据最小根证书数进行验证。Twitter的CDN使用多个由Symantec/Verisign或Digicert签名的证书,因此无法锁定单个证书。在这种情况下,服务器白名单防御ddos,您可以构建一个自定义根证书文件,然后仅根据这些根证书进行验证。PHP(请参阅CURLOPT_CAINFO选项)、Python和Go都可以执行撤销检查