如果我使用 PHP 的fopen()
函数从 HTTPS 网站检索数据,这就是所谓的安全 HTTPS 连接。即它是否提供针对中间人攻击和窃听攻击的保护?
问问题
742 次
1 回答
5
不是默认的,没有。
它将始终提供某种形式的保护以防止简单的窃听攻击,因为数据将始终被加密(只要您连接的 SSL 服务器允许使用至少一个加密密码 - 是的,HTTPS 中允许使用空加密密码连接 :roll-eyes :) 但是,默认情况下,它不会防止中间人,因为它不验证服务器的证书,因此您无法确信您已连接到预期的服务器。
可以打开证书验证。为此,您需要提供根证书包并使用第四个参数fopen
来指定流上下文。流上下文允许您修改流的行为。下面的示例切换会导致针对指定捆绑文件中的根证书验证证书。
$context = stream_context_create( array(
'ssl' => array(
'cafile' => 'ca_bundle.crt',
'verify_peer' => true
)
));
$file = fopen( $url, 'r', false, $context );
于 2012-05-24T08:59:19.123 回答