首頁  >  問答  >  主體

帶有 SSL 驗證的 cURL 可以工作,但如何驗證它是否已加密?

我擁有 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粉155832941P粉155832941300 天前387

全部回覆(1)我來回復

  • P粉505450505

    P粉5054505052024-01-17 11:07:00

    首先你使用了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指令。

    回覆
    0
  • 取消回覆