帶有 SSL 驗證的 cURL 可以工作,但如何驗證它是否已加密?
P粉155832941
P粉155832941 2024-01-16 12:51:08
0
1
423

我擁有 2 個網站,example.comdomain.com。兩個 DNS 均託管在 Cloudflare 上。 Cloudflare 在其儀表板上提供免費的 SSL/TLS 加密。這兩個網站都設定為強制 HTTPS 重寫的完全加密模式。 example.com 託管在 WebHostingA 上,domain.com 託管在 HosterB 上。

我想使用domain.comexample.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 你得到了我的內容!)。然而,我擔心的是我不必在 cURL 程式碼中提供任何類型的憑證。如何檢查從 domain.com 發送的內容是否已加密以及從 example.com 收到的內容是否已加密?我的目標是在這兩個網站之間安全地傳輸資料。

P粉155832941
P粉155832941

全部回覆(1)
P粉505450505

首先你使用了https方案,這意味著curl使用tls連接。 https://example.com/test.phphttp://example.com/test.php 是不同的 url,curl 本身不會改變方案.

第二 - 在某些情況下,伺服器端可能會重定向到純 http。為了確保沒有重定向並且連接是加密的,您可以嘗試使用 curl_getinfo() 函數並檢查 CURLINFO_EFFECTIVE_URLCURLINFO_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指令。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板