首頁 >專題報導
小心!你的習慣出賣了自己
經典的「123456」、「password」仍然是SplashData機構所公布的2017年最爛密碼排行榜,顯示一般人仍習慣將密碼設定得簡單又好記,而導致自己的帳戶變得容易被盜[1]。因此,本文將以常見的GET與POST表單傳送方式為例,說明哪種方式較適合傳送具敏感性的資料。以及示範如何透過瀏覽器修改HTML碼,直接看到被記住的密碼,說明公共場所的電腦並不適合記住密碼。最後再介紹HTTP及HTTPS(SSL/TLS)協定,並分析其網路封包,認識如何加強網站的安全性。
實驗環境
1. 作業系統:Windows 2012 R2 Server
2. 程式語言:ASP
3. 網頁伺服器
圖1:IIS版本
前置作業
1. 表單頁(test.asp)的原始碼
<!DOCTYPE html> |
2. 接值頁(value.asp)的原始碼
<!DOCTYPE html> |
第一項實驗:POST與GET,哪個較不適合敏感性資料?
圖2:第一項實驗的架構圖
名稱 |
值 |
說明 |
ID |
|
識別 |
password |
|
密碼 |
submit |
|
「送出」按鈕 |
表1
說明:在HTTP協定下實驗,並分別使用「以POST傳送」及「GET傳送」,從URL路徑來觀察兩者的不同。
1. 輸入識別(ID)及密碼(Password)
圖3
2. 按「以POST傳送」的結果
圖4
3. 按「以GET傳送」的結果
圖5
小結:實驗發現,GET方式能在URL網址就看到密碼!根據《Soul & Shell Blog》所載文章,其實是因為POST是將表單放在訊息主體中傳送,而GET則是將表單內容轉為搜尋字串的關係[2]。因此,若要傳送敏感性資料,且打算只從GET或POST作選擇時,建議使用POST方式傳送。
第二項實驗:如何用瀏覽器取得所儲存的密碼?
圖6:第二項實驗的架構圖
名稱 |
值 |
說明 |
ID |
test |
識別 |
password |
123456 |
密碼 |
submit |
以Post傳送 |
「送出」按鈕 |
表2
說明:使用IE瀏覽器作實驗,選擇記住所輸入帳號及密碼。接著關閉瀏覽器後再開啟網頁,確認是否真的記住所輸入帳號及密碼。最後再示範如何透過瀏覽器修改屬性,來取得密碼內容。
1. 輸入ID及密碼,並在提示中選擇「儲存密碼」,再關閉瀏覽器
圖7
2. 重新開啟瀏覽器,以確認所填的ID與密碼均自動載入
圖8
3. 在「密碼輸入框」按滑鼠右鍵,選「檢查元素」
圖9
4. 在密碼屬性(type),連點滑鼠左鍵兩下,進入編輯模式
圖10
5. 改成文字(text)屬性,按Enter鍵,就能看到所儲存的密碼
圖11
小結:本次實驗是透過瀏覽器的HTML編輯功能讓密碼變成明碼,而Chrom、Firefox其實也有類似的機制。另外,根據《硬是要學》的說明,瀏覽器所內建的帳號密碼儲存功能並非加密儲存[3]。雖然文章有提到可以使用瀏覽器所提供的防護措施來加強管理,但公開場所的電腦仍不建議自動儲存密碼,因為仍然有可能不小心就讓密碼洩露出去。
第三項實驗:HTTP與HTTPS,哪個比較安全?
圖12:第三項實驗的架構圖
名稱 |
值 |
說明 |
ID |
|
|
password |
|
|
submit |
以Post傳送 |
「送出」按鈕 |
表3
說明: 使用者填寫帳號(ID)及密碼(Password)後,分別使用HTTP及HTTPS協定的方式,透過POST方式傳送,再透過WIRESHARK軟體,分析其網路封包的傳輸狀況。
1. 在HTTP及HTTPS協定下,分別輸入識別及密碼
圖13
圖14
2. 載入表單頁時,從WIRESHARK看封包傳輸情形
圖15
圖16
3. 按下「以POST傳送」按鈕,在WIRESHARK的封包傳輸情形
圖17
圖18
小結:實驗的結果,說明了在網路封包中,HTTPS協定是能在內容進行加密,而HTTP則能直接所傳輸的內容。經閱讀《Android技術特攻隊》的文章,說明HTTPS提供三項功能,即內容加密、身份認證及數據完整性[4]。因此,若要傳送敏感性資料,建議使用HTTPS協定。
結論
在使用習慣上,不建議讓瀏覽器記住任何具敏感性的資料,在網站的管理上,使用HTTPS協定及POST方式傳送,似乎較為安全。但《iThome》亦有文章指出,加密連線可能會佔用過多的伺服器資料,亦有可能成為有心人士用來隱藏自己的惡行的工具[5]。因此,在安全性及效能的考量下,仍建議搭配其他管理機制,以兼顧實際需求。
參考資料
[1] 2017年「最爛密碼」百大排行榜 123456再度蟬聯冠軍!。數位時代。檢上檢索日期:2018年02月05日。網址:
https://www.ettoday.net/news/20171220/1076224.htm
https://www.teamsid.com/worst-passwords-2017-full-list/
[2] SJ(2011年02月02日)。淺談 HTTP Method:表單中的 GET 與 POST 有什麼差別?Soul & Shell Blog。檢上檢索日期:2018年02月12日。網址:
https://blog.toright.com/posts/1203/%E6%B7%BA%E8%AB%87-http-method%EF%BC%9A%E8%A1%A8%E5%96%AE%E4%B8%AD%E7%9A%84-get-%E8%88%87-post-%E6%9C%89%E4%BB%80%E9%BA%BC%E5%B7%AE%E5%88%A5%EF%BC%9F.html
[3] Werboy(2013年08月08日)。在Chrome瀏覽器中儲存的密碼有多安全?硬是要學。檢上檢索日期:2018年02月12日。網址:
https://itw01.com/UORENPF.html
[4] WangXin(2016年03月27日)詳解https是如何確保安全的?Android技術特攻隊。檢上檢索日期:2017年08月01日。網址:
http://www.wxtlife.com/2016/03/27/%E8%AF%A6%E8%A7%A3https%E6%98%AF%E5%A6%82%E4%BD%95%E7%A1%AE%E4%BF%9D%E5%AE%89%E5%85%A8%E7%9A%84%EF%BC%9F/
[5]李宗翰(2014年12月25日)HTTPS網站居主流 資安重新定義。iThome。檢上檢索日期:2017年08月01日。網址:
https://www.ithome.com.tw/tech/93108