[英]Best way of encrypting text to store in mysql database
我想知道在數據庫中存儲文本並加密它以防止其他人(管理員)閱讀它的最佳方法。 我允許用戶編寫(最多)純文本段落,然后存儲在數據庫中。 然后,該文本將在其帳戶中顯示給用戶。 這意味着我必須能夠在加密數據並將其存儲在數據庫中后對數據進行解密。 (我使用PHP創建了項目)
謝謝
您正在尋找的是MCrypt 。 此外,如果您希望數據真正安全,則需要使用HTTPS進行傳輸,因為一旦PHP腳本解密了密文(當用戶訪問文本時),純文本就會通過服務器的NIC發送出去。 因此,一個狡猾的管理員或攻擊者只能嗅探界面上的流量並記錄流量。
AES_ENCRYPT
和AES_DECRYPT
是加密/解密字符串的簡單方法,無需自己編寫代碼,可在MySql 5中向上提供。
請注意, AES_ENCRYPT
的輸出是一個二進制字符串,需要存儲在二進制數據類型的列中(很可能是適當的一個是BLOB
)而不是通常用於文本的文本類型,如TEXT
或VARCHAR
數據。
問題是你將不得不在某處存儲加密密鑰,並且你必須讓管理員不能訪問它。 我不知道那是否可能(管理員到底是什么?)
實際上,您無法阻止管理員查看這些文本,因為他也能夠讀取加密密碼並對其進行解密。
然而,有一個很大的缺點:
您必須在會話中以明文形式存儲用戶密碼,因此您必須注意會話數據不存儲在日志,數據庫等中......
如果您的管理員可以訪問php代碼,那么破解這個代碼只需幾秒鍾。
唯一可行的情況是,您的管理員可以訪問數據庫和后端,但不能訪問代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.