iT邦幫忙

第 12 屆 iThome 鐵人賽

0

這裡提供了有關如何在這裡應用程式中實施身份驗證和授權的方法:,這些指南將涵蓋以下一般要點:

身份驗證是通常通過初始登錄並隨後通過驗證用戶瀏覽器發出的每個HTTP請求上的唯一秘密代碼來驗證用戶身份的過程。
授權是確保用戶只能訪問他們應該使用的資源的過程,通常基於根據商業邏輯定義的某些角色或風險等級。

##### 建議方法

  • 需要針對個資應用程式的多因子身份驗證

    通過添加多層驗證,我們可以確保用戶的帳戶不受損害,尤其是對於個資的應用程式和服務。
    這樣可以確保在密碼(最常見的身份驗證初始密碼)不足以破壞用戶帳戶的情況下。

    • 修正方法
      與這裡上使用的適當身份提供者聯繫,並在需要時要求多因子認證。
    • 風險等級
  • 通過最小權限原則限制OAuth2範圍

    當使用OAuth2客戶端時,將為該客戶端定義一個範圍。
    此範圍確定在通過auth提供程式執行身份驗證之後,客戶端可以訪問哪些後端API。
    設置新的OAuth2客戶端時,要求客戶端的團隊應確定他們需要訪問哪些API/資料,並將範圍限制為那些特定的API。

    限制我們API的範圍是一種最佳做法,可以限製成功攻擊的影響。
    同樣,通常是使用給定範圍進行身份驗證的這裡 ID用戶,並且具有給定的訪問代碼(Token)將使用戶直接訪問API。
    由於這是公共可訪問的,因此應注意用戶不能訪問個資的API,尤其是處理個人身份訊息(PII)的API。

    • 修正方法
      在需求階段,確定OAuth2客戶端需要哪些訊息,並將API限制為僅必要訊息。
      如果可能,請與auth提供程式一起構建自定義範圍,以限制對更廣泛的API的訪問。
    • 風險等級
    • 參考資料
      https://tools.ietf.org/html/rfc6819#section-3.1.1
  • 代碼(Token)壽命有限

    進行身份驗證時,會使用各種代碼(Token)來證明用戶的身份。
    這通常是通過Session cookie或附加到用戶帳戶的訪問代碼(Token)進行的。
    這些代碼(Token)應具有最短的生命週期,以平衡用戶需求和安全性。
    代碼(Token)在無限長的時間內無效,並且應在合理的時間範圍內到期。

    這主要是深度防禦措施,著重於在這些代碼(Token)被洩露時限制攻擊的影響。
    這也減少了結果應用程式的攻擊面,在任何給定時間都減少了有效代碼(Token)的數量。

    • 修正方法
      檢查所有與身份驗證相關的代碼(Token),並檢查其生存期。如果不確定,請聯繫安全部門以獲取有關其使用壽命的建議。如果可能,請在合理使用範圍內使用最短壽命。

    • 風險等級

  • 驗證OAuth2重定向URI

    在執行OAuth2登錄流程時,在使用auth提供程式進行身份驗證之後,重定向URI用於將訪問代碼(Token)安全地發送到客戶端Web應用程式。
    這是由客戶端在OAuth2流中提供的。
    應該驗證此URI,以確保它是OAuth2客戶端使用的已知URI。

    當有效的重定向URI上存在打開的重定向時,這可以防止潛在的訊息洩露攻擊。
    這導致用戶的OAuth代碼(Token)可能被洩漏,從而損害了他們的帳戶。

    • 修正方法
      根據已知有效URI的白名單驗證整個URI。
      避免使用正則表達式或子字符串匹配。
    • 問題範例:
      /好的範例:
      ef validate_redirect_uri(redirect_uri):
      if redirect_uri == "https://newservice/validate_oauth" :
      	return True;
      return False;
      /不好的範例
      ef validate_redirect_uri(redirect_uri):
      if "newservice" in redirect_uri:
      	return True;
      return False;
      ``
      
    • 風險等級
  • 驗證OAuth2狀態參數

    啟動初始OAuth2流時,客戶端可以選擇提供狀態參數。
    然後將此狀態參數與授權一起發送回去,以便稍後在流程中由客戶端進行驗證。
    應在初始OAuth2請求時生成此狀態參數,並在發生來自身份驗證提供者的授權後對其進行存儲以進行驗證。

    這是為了確保OAuth2流由用戶啟動,並且不容易受到潛在CSRF(跨站請求偽造)的攻擊。
    通過確保用戶已啟動OAuth2流,他們將在具有已知權限的帳戶內執行操作。

    • 修正方法
      初始化OAuth2流時,生成一個加密安全的隨機狀態參數。
      當客戶端通過重定向URI回調返回時,應對此進行驗證。
      該參數僅對啟動該參數的OAuth2流有效。
    • 風險等級
    • 參考資料
      https://tools.ietf.org/html/rfc6819#section-3.6

上一篇
API 開發方法
下一篇
密碼開發方法
系列文
安全軟體開發生命週期(SSDLC)學習筆記36
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言