聊了 HTTP 的基本概念(網站內容是怎麼被下載到電腦裡的?、Method、Status Code)後,我們今天接著聊聊關於網路安全的一些小知識吧。
你上的網站是「安全」的嗎?
現在的瀏覽器對於安全性的提醒都蠻完善了,拿 Chrome 來說,當你瀏覽某個網站時,可以看看網址列是否有提醒你此網站是否安全。
*鳥哥的 Linux 私房菜
例如鳥哥的 Linux 私房菜,目前用瀏覽器查看的話,會提醒你這是個「不安全」的網站(但還是相當推這個學習資源),在此網站輸入較為機密的訊息,如密碼、信用卡號等等可能會有洩漏的風險。
這邊的「安不安全」代表在資料傳輸的過程中安不安全,是否可能被中間人擷取訊息,並不代表這個網站的伺服器安全性是否夠高。
我們在前面聊過路由,知道在網路上傳送訊息到某個 IP 位置中間會經過許許多多節點。
也就是說當某個人 Alice 透過 HTTP 上網時,連到 Bob 的伺服器,如果中間經過的某個節點是個壞人 Eve,他就能把你的封包打開來偷看一下,繼續傳給下一個節點,Alice 和 Bob 卻渾然不知,完全沒有隱私可言。
*中間人攻擊
這就是所謂的中間人攻擊(Man-in-the-middle attack,簡寫成 MITM attack)。
那這可怎麼辦?能不能繞過 Eve 改走其它節點呢?答案是沒用的,任何一個節點都能看到你封包裡面的內容,如果要在上網時不讓別人看到你的內容,在傳輸時保證安全性,就得靠 HTTPS 這個協定的。
在 HTTP 之後加一個 S 的協定 HTTPS 是什麼?這個 S 代表的是 Secure 的意思,也就是安全的 HTTP。
和 HTTP 相比,HTTPS 如何做到傳輸時更安全的呢?
加密,我加了密。
HTTPS 透過「傳輸層安全性協定」(TLS, Transport Layer Secure,前身為 SSL, Secure Sockets Layer)來進行封包的加密,在 TCP 送出封包之前先加密,收到時先解密。
*google.com
透過 HTTPS 協定提供加密傳輸通道的網站,就會是 https://
開頭。瀏覽器也會給這個網站一個「鎖頭」表示在此網站送出敏感訊息,在傳輸時是安全的。
但要讓網站獲得這個鎖頭,不單單是透過 HTTPS 協定加密解密,還包含「憑證」的相關資訊就是,至於憑證為何,我們待之後聊。
我們了解到 HTTPS 所使用的 TLS 這個協定是介於 HTTP 和 TCP 之間的,我們傳輸的或是從網站得到的回應都會經過加密,有一定的保護存在。
那麼網址呢?或是我在網址後面似乎也有看到一些參數像是 https://xxx?name=123
中的 name=123
這類的資訊,是否也會被保護呢?
簡單一點的答案是,會的。
無論是 HTTP 的哪種 Method,都會被加密,用 HTTP GET 的加入的額外資訊稱做 parameters,例如 name=123
就是其中一個 parameter,自然也會被加密。
但是你瀏覽的網站是什麼網站,就不見得是可以隱藏的了。除了你送的目的 IP 位置是以明文的方式顯示,在透過網址轉成 IP 位置所需要用的 DNS 這個服務,也會透露出你上了什麼網站。
因此,就算刪掉你瀏覽器中的瀏覽記錄或使用無痕模式上網,你的 Router,或是 ISP 還是會記錄相關的資訊唷!