2017-02-14 32 views
1

我們正在我們所有站點上進行安全更新,其中涉及的兩個步驟是在傳輸時加密數據並對靜態數據進行加密。我們是否應該加密存儲在aspnet_Profile表中的數據

添加SSL證書將在傳輸時加密數據,我們需要加密數據庫中的所有數據,這些數據被分類爲用戶的個人信息。

其中一些細節存儲在aspnet_profile表中。

任何人都可以請建議關於加密存儲在這個表中的數據? 我們是否真的需要加密數據以作爲安全更新的一部分?

回答

0

這取決於。您希望能夠訪問用戶的信息,還是用戶是唯一有權訪問數據的人?

第一次,我認爲只有當數據庫存儲在與Web服務器分開的服務器中,或者解密密鑰存儲在單獨的服務器中時,數據的加密纔有意義。爲了解密數據並將其呈現給用戶,您需要對其進行解密。如果加密數據和密鑰位於同一臺服務器中,並且該服務器遭到入侵,則攻擊者將能夠解密所有內容,因爲他們也可以訪問密鑰。如果您將它們分開存儲,則需要折中2臺(或更多臺)服務器,這可能會更困難。另外,由於加密是一項繁重的任務,因此您應該只加密敏感數據(無論您認爲對您的方案敏感)。像密碼這樣的數據不應該被加密,而是散列和醃製(有關如何做到這一點的網上有很多信息)。如果您決定對所有內容進行加密,那麼您應該爲每個用戶使用不同的密鑰,這樣如果一個密鑰被攻破,只有一個用戶會受到影響。如果您只想讓用戶查看存儲的信息,則應該知道無法訪問它(除非您將其存儲在單獨的數據庫中,而無需加密,或使用您自己的密鑰加密)。如果您沒有使用您自己的密鑰備份信息(或以純文本存儲 - 無法達到目的),丟失密碼的用戶將遇到麻煩。即使您擁有數據副本,但恢復數據將意味着使用密鑰(如果未以明文存儲)對其進行解密,並使用用戶設置的新密鑰再次對其進行加密。如果數據量很大,這可能是一項繁重的任務。最後,如果您只希望用戶擁有訪問權限並承擔全部責任(因此您將無法訪問它,但所有內容均爲),您應該明確,並且最好在客戶端執行加密。同樣,只有敏感數據才能被更好地加密。此外,用戶登錄的用戶名和密碼等信息不應加密。在這種情況下,同樣的醃製散列原理也適用於密碼。

在這兩種情況下,您都應該記住,丟失密鑰意味着可能會丟失全部的數據!您還應該使用一些很好的加密方案,如AES CFB模式。

總體而言,這是否是一個好主意,實際上取決於數據和預算的敏感性。需要定期備份,並小心處理,避免丟失密鑰。額外的服務器也可能是必需的,如果網站的流量很大,可能需要強大的服務器才能處理這個繁重的任務。

相關問題