別再傻傻地寫程式碼,程式認證安全防護的知識你了解嗎?
- 2020 年 2 月 10 日
- 筆記
Web的安全防護已經講過一些知識了,下面繼續說一下安全防護中的密碼傳輸、敏感操作二次認證、客戶端強驗證、認證的錯誤消息、防止暴力破解、日誌與監控等。

一、密碼傳輸
登錄頁面及所有後組需要認證的頁面必須通過SSL、TSL或其他的安全傳輸方式進行訪問,初始登錄頁面必須使用SSL、TSL訪問,否則攻擊者可能會更改登錄表單的action屬性,導致用戶登錄憑證泄露,如果登錄後未使用SSL、TSL訪問認證頁面,攻擊者坑內會竊取未加密的會話ID,從而危及用戶當前活動會話,同事,還應該儘可能對密碼進行二次加密,然後在進行傳輸。
二、敏感操作二次認證
為了減輕CSRF、會話劫持等漏洞的影響,在更新賬戶敏感資訊(如用戶密碼,電子郵箱,交易地址等)之前需要驗證賬戶的憑證,如果沒有這種策略,攻擊者不需要知道用戶的當前憑證,就能通過CSRF、XSS攻擊執行敏感操作,此外,攻擊者還可以臨時接觸用戶設備,訪問用戶的瀏覽器,從而竊取會話Id來接管當前會話。
三、客戶端強驗證
應用程式可以使用第二因素來檢測用戶是否可以執行敏感操作,典型示例為SSL、TSL客戶端身份驗證,又稱SSL、TSL雙向校驗,該校驗由客戶端和服務端組成,在SSL、TSL握手過程中發送各自的證書,就像使用服務端證書想證書頒發機構(CA)校驗伺服器的真實性一樣,伺服器可以使用第三方CS或自己的CA校驗客戶端證書的真實性,為此,服務端必須為用戶提供為其生成的證書,並為證書分配相應的值,以便用這些值確認證書對應的用戶。
四、認證的錯誤資訊
認證失敗後的錯誤資訊,如果未被正確實現,可被用於枚舉用戶ID與密碼,應用程式應該以通用的方式進行相應,無論用戶名還是密碼錯誤,都不能表名當前用戶的狀態。
錯誤的相應示例:
登錄失敗,無效密碼; 登錄失敗,無效用戶; 登錄失敗,用戶名錯誤; 登錄失敗,密碼錯誤;
正確的相應示例:
登錄失敗,無效用戶名或密碼
某些應用程式返回的錯誤資訊雖然相同,但是返回的狀態碼卻不相同,這種情況下也可能會暴露賬戶的相關資訊。
五、防止暴力破解
在Web應用程式上執行暴力破解是一件非常容易的事情,如果應用程式不會由於多次認證失敗導致賬戶禁用,那麼攻擊者將有機會不斷地猜測密碼,進行持續的暴力破解,直至賬戶被攻陷。普遍的解決方式有多因素認證、驗證碼、行為校驗(阿里雲、極驗等均提供服務)
六、日誌與監控
對認證資訊的記錄和監控可以方便的檢測攻擊和故障,確保記錄以下3項內容:
1、 記錄所有登錄失敗的操作;
2、 記錄所有密碼錯誤的操作;
3、 記錄所有賬戶鎖定的登錄;