我正在創建一個移動REST API。我需要加密祕密訪問密鑰嗎?
當前,當用戶使用電子郵件和密碼登錄時,我生成密鑰會話密鑰(64個字符長),將其存儲在數據庫中併發送給用戶,以便用戶無需再次登錄以便將來請求,直到他們註銷。
對於下一個請求,我只是檢查提供的會話密鑰是否與數據庫中的密鑰相同。
但是,我在這個方案中看到了一個很大的安全漏洞。如果攻擊者能夠訪問數據庫,他們可以使用密鑰並冒充任何人而不知道密碼。除了掩蓋用戶的真實密碼之外,在這種情況下加密密碼有什麼意義 - 它不會阻止其他任何事情。
所以,我的問題是你如何正確存儲這些訪問密鑰?
Twitter將在其API上登錄時發送會話密鑰。那麼,他們如何存儲這些密鑰?
謝謝。
但是這個方案不允許從多個設備登錄到同一個帳戶,除非我有一對多關係數據庫表的會話密鑰。因爲在第二次登錄時,我們不會再知道(非哈希)會話密鑰。是對的嗎? – moeseth
@moeseth:對,您無法以這種方式在多個客戶端設備之間共享相同的會話密鑰。通常,人們會將這些視爲單獨的*會話*屬於相同的*用戶*。 –