2017-08-04 57 views
0

我正在存儲一些PII(個人身份信息)的應用程序,例如出生日期以及名稱和其他一些字段。我想在MySQL上使用CBC使用AES_ENCRYPT加密數據,但是有一位管理員需要查看信息,但是如果我加密用戶的信息,管理員將無法看到。我是否應該使用用戶名對PII進行加密,並讓管理員無法使用用戶名查看和加密用戶名,或者我應該保留未加密的用戶名,但使用用戶名加密其他所有內容,並留下一些安全風險,但允許管理員看到信息。我該怎麼辦?如果存在敏感信息,我應該在MySQL上加密什麼?

回答

1

一般來說,使用像AES這樣的對稱加密在DBMS中靜態加密數據既不必要也不足以保護它免受攻擊。

爲什麼?

首先,像這樣的系統中的薄弱環節通常是Web服務器,而不是MySQL服務器機器。但是,Web服務器必須包含加密和解密數據的必要密鑰。如果攻擊者使用您的Web服務器,他會擁有您的密鑰和您的算法來生成密鑰,因此他會獲取您的敏感數據。他還有一個非常強大的方法來確定你認爲哪些數據是敏感的。

攻擊者能夠直接破壞MySQL服務器的可能性要小得多;在涉及PII的情況下,這些機器通常位於防火牆之後。

另一件事:您的管理員。他需要擁有密鑰,而管理員對攻擊者來說是多汁的目標。 (我不是說他是黑帽子,只是他的白帽子上有一個很大的紅色目標。)

另一件事:它可能會給你一種虛假的安全感。 (注意密碼沒有加密:它們是散列的,很容易比較密碼和哈希密碼,並說「匹配」或「不匹配」。但是,更難取得散列密碼並恢復原始密碼因此,口令被「加密」的說法與此情況無關。)

我認真地建議你花費你的時間和金錢而不是在你的建議中加密你的PII。相反,花你的資源來確保你的網站是安全的,並確保你的MySQL服務器安全地在強大的防火牆之後,並且在公共互聯網中不可見。請參閱OWASP Top Ten漏洞。花時間在你的網站上處理它們。使用滲透測試工具,如打嗝掃描或zap掃描來嘗試打入。

保護您的網站就像是關於兩個傢伙和熊的老玩笑。

熊:咆哮。喬:我希望我能超越熊。邁克:我只是不得不超越你。

在網絡安全中,你不想成爲喬。