[英]Securing REST Web Service using token (Java)
這個問題在某種程度上與以下相關問題有關。 但是,我需要更清楚一些方面和一些其他信息。 請參閱: REST Web服務身份驗證令牌實現
背景:
這是我迄今所理解的:
第一次請求:
對於后續請求:
更多細節:
這是正確的方法嗎?
為什么不將它簡化為以下內容?
第一次請求:
對於后續請求:
在服務器端,令牌將以失效日期存儲。 在每次訪問服務時,將更新此日期以創建滑動到期日期。 每隔幾分鍾就會有一個作業刪除已過期的令牌,並且檢查令牌以查找有效會話的查詢只會檢查那些未被認為已過期的查詢(如果預定的作業因任何原因失敗,則會阻止永久會話)。
不需要對數據庫中的令牌進行散列和加密 - 除了通過默默無聞的安全性之外,它不會增加真正的價值。 你可以哈哈哈哈。 這可以防止設法進入會話數據表的攻擊者劫持現有用戶會話。
方法看起來不錯。 不太安全。 讓我強調一下該請求可能發生的一些攻擊。
在POST請求中的中間人攻擊,用戶可以篡改請求,服務器無法確保數據不被篡改。
重播攻擊:在此,攻擊者不會篡改請求。 攻擊者輕敲請求並在短時間內將其多次發送給服務器,雖然這是一個有效請求,服務器多次處理請求,這是不需要請閱讀Nonce。
在第一步中,用戶將他的憑證(即用戶名和密碼)發送到登錄服務,如果您的基於Web的應用程序也使用相同的密碼,則可能是危險的。 如果密碼被泄露,API和Web上的所有內容都暴露出來,請使用不同的PIN進行API訪問。 另外,確保您指定的解密令牌,在一定時間后過期。
確保服務(應用程序服務器)tomcat。 如果發生內部錯誤,jboss永遠不會返回服務器頁面,這會為攻擊者提供部署應用程序的服務器的額外信息。
- 基於第二次修改的修改 -
是的,如果您使用相互SSL,則是正確的,但如果是單向訪問,則您沒有客戶端證書。 如果你只是加倍確保請求中的所有內容,就像簽名(簽名)SOAP,強大的數據傳輸機制之一那樣。 但重放攻擊是HTTPS的一種可能性,只需處理即可。 休息使用令牌加密是好的。 為什么不讓客戶端用密碼解密令牌並返回解密輸出,你可以驗證輸出,如果它存在於你的數據庫中? 這種方法即使是HTTPS,用戶也不會通過網絡發送密碼?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.