我在PHP中使用 curl 来请求某个https网站,例如https://github.com
,我只使用这样的代码:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://github.com/search?q=react");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
echo $output;
curl_close($ch);
?>
然后,我可以获得该页面。
但是,我之前搜索过,发现如果要求 https 资源,则需要添加以下代码:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
那么为什么我可以在没有这两行代码的情况下请求https资源以避免SSL检查?
感谢。
答案 0 :(得分:2)
两个Curl选项定义为:
CURLOPT_SSL_VERIFYPEER - 验证对等方的SSL证书
和
CURLOPT_SSL_VERIFYHOST - 根据主机验证证书的名称
他们都在Curl中默认为true
,除非你有充分的理由,否则不应该被禁用。通常只有在您向具有无效或自签名证书的服务器发送请求时才需要禁用它们,这通常只是开发中的问题。任何面向公众的网站都应该提供有效的证书,通过禁用这些选项,您可能会面临安全问题。