在開始這篇文章之前,有兩個重要的名詞要先分的清楚,那就是 :
Authentication ( 認證 )
Authorization ( 授權 )
簡單的說,Authentication 確保你是誰,Authorization 確保你可以做什麼。
Testing for Credentials Transported over an Encrypted Channel
這裡的測試目標主要是評估 web 是否在使用未加密的情況來進行 Authentication。
並且以下的敏感資料應該放在適當的地方且透過 https 傳輸 :
密碼,放在 http body。
token,放在 cookies,並且這裡要注意需要在 cookie 加上 Secure,表示這個 cookie 只在加密的連接中進行傳輸。
Testing for Default Credentials
這章主要是在說,在某些情況下我們通常會是使用開源或商業軟體所提到的 web 管理界面,然後常常這裡有些 default 的帳號或預設值,例設新建帳號時會預設某設密碼。
所章節的測試目的就是確認 :
服務的預設狀況是否存在,並且預設是否安全。
測試新建帳號流程是是否有預設資訊,讓 hacker 可以猜出來。
Testing for Weak Lock Out Mechanism
這個主要就是測試帳號鎖的機制 ( lockout mechanism )。
會有這個機制是因為,如果什麼都沒有設置,就代表 hacker 可以用程式一直 try,這也代表只要有時間就可以試出帳密。
然後這裡的測試目標為 :
評估帳號鎖定機制對抗暴力法的能力。
評估帳號鎖定解鎖的機制是否安全。
其中文章有提到 CAPTCHA 可以減少暴力攻擊法,但是它也有自已的可能問題 ( 不過這點要看實作 CAPTCHA 的套件 ),所以還是建議要 lockout mechanism。
CAPTCHA 如果是太簡單的會容易被解讀,例如算數。
CAPTCHA 的結果驗證可能有問題,例如只看 http 回應 status 或是 CAPTCHA 服務端被攻擊直接回傳全部都對。
Testing for Bypassing Authentication Schema
這章主要是在討論,Authentication 的過程 login 的檢查,裡面有提到幾個它幾意的點 :
Direct Page Request : 這裡是指身份驗證機制如果只在登錄頁實施,代表使用者可以直接請求其它頁面的方式繞過身份驗證。( 應該…不會有有出這種東西的工程師吧… )
Parameter Modification : 這裡是指有辦法用修改請求參數的方式,來成功進到需要登入才能進去的網頁。
Session ID Prediction : 就是 userId 好不好猜,有沒有順序。
SQL Injection
Testing for Vulnerable Remember Password
這裡章主要是在說,因為密碼越來越多,而且每一次要進頁面都要登入,很麻煩,用戶心情會不太好,所以產生了以下兩個技術 :
remember user 一段時間。
password 管理。
然後這一章節就是要測試這兩個的安全性,主要重點有幾個 :
儲放 credentials ( username、password ) 的方式,通常不會在 client 端儲放,而是用 token 來代替。
token 要有到期時間。
自動輸入帳號密碼可能會 ClickJacking 與 CSRF 攻擊的風險 ( 但這裡 chrome 是怎麼處理的呢 ? )。