別再傻傻地寫程式碼,程式認證安全防護的知識你了解嗎?

  • 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、 記錄所有賬戶鎖定的登錄;