我拥有两个网站,example.com和domain.com。两个DNS都托管在Cloudflare上。Cloudflare在仪表板上提供免费的SSL/TLS加密。。这两个网站都被设置为完全加密模式,强制HTTPS重写。example.com托管在WebHostingA上,domain.com托管在HosterB上。
我想使用domain.com从example.com/test.php获取内容。
domain.com/get-contents.php的代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://example.com/test.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, TRUE);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, ['username' => 'Bob']);
$response = curl_exec($ch);
var_dump($response);example.com/test.php的代码:
if (isset($_POST['username']) && ctype_alpha($_POST['username'])) {
echo($_POST['username'] . " You got my contents!");
} else {
echo("Nope!");
}我能够成功地返回从example.com/test.php (Bob You got my contents!)获取的内容。但是,我担心的是,我不必在cURL代码中提供任何类型的证书。如何检查我从domain.com发送的邮件是否加密了,从example.com收到的邮件是否加密了?我的目标是安全地在这两个网站之间传输数据。
发布于 2022-07-02 21:50:14
首先,您使用了https方案,它意味着使用tls连接的卷曲。https://example.com/test.php和http://example.com/test.php是不同的urls,curl本身不会改变方案。
第二,在某些情况下,服务器端可以将方向重定向到纯http。为了确保没有重定向和连接是加密的,您可以尝试使用curl_getinfo()函数并检查CURLINFO_EFFECTIVE_URL和CURLINFO_SSL_VERIFYRESULT字段,如下所示:
$r = curl_getinfo($ch, CURLINFO_SSL_VERIFYRESULT);
$url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);$r应该是0,$url应该从https://开始。
此外,您还可以在任何服务器上使用tcpdump记录请求,并尝试检查转储以获取任何普通数据。
[server1]# tcpdump -l -n -s 0 -w dump.pcap host server2.ip.addres您将看到连接的端口,并将捕获的数据记录到dump.pcap文件中。如果其中一个端口是443,则使用tls发送通信。此外,您还可以在wireshark中分析dump.pcap文件,或者只使用strings命令。
https://stackoverflow.com/questions/72842593
复制相似问题