我擁有 2 個網站,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 你得到了我的內容!
)。然而,我擔心的是我不必在 cURL 程式碼中提供任何類型的憑證。如何檢查從 domain.com
發送的內容是否已加密以及從 example.com
收到的內容是否已加密?我的目標是在這兩個網站之間安全地傳輸資料。
P粉5054505052024-01-17 11:07:00
首先你使用了https
方案,這意味著curl使用tls連接。 https://example.com/test.php
和 http://example.com/test.php
是不同的 url,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
指令。