2012-11-04 113 views
0

我正在進行一個考試項目! 我在尋找一些技術,以密碼保護LONGBLOB領域中的MySQL數據庫。 此字段用於存儲問題文件。 我想要這樣做,即使有人侵入我的數據庫,除非他有特殊的密碼/密碼,否則他不能訪問該字段。密碼保護表中的字段#mysql

+0

所以您要執行保密(即加密longblobs),但單獨保留的可用性和完整性(即假設有人可以訪問數據庫)?在您首先強制執行應用程序和數據庫之間的通信鏈接之前,完全沒有意義。這就像把監獄酒吧放在帳篷的窗戶上;) –

回答

0

你可以使用AES或DES加密/解密。保持關鍵在應用程序代碼

encryption functions

需要注意的是DES需要一些SSL被編譯成二進制文件。

+0

每次我想要訪問該字段時,我想使用一個隨機的和不同的密鑰。可能嗎? –

+0

這是,但你會在哪裏存儲它?如果你將它存儲在加密的字段附近,每個人都可以解密它,因爲你只是給了他們密鑰。這就像掛在鎖上的(隨機)鍵。 –

+0

是的,我明白你的意思了! 但我仍然非常困惑如何實現這一點。 如果你會在這裏分享一些關於實施的鏈接,那將是如此的糟糕。 –

1

「密碼保護」的概念實際上是一種使用加密密鑰的「加密」。

想必你的mysql數據庫已密碼保護,服務器它是在與數據庫登錄本身。但是,爲了提供額外的安全性,您可以存儲具有加密功能的字段。

是MySQL數據庫的服務器上,或者是在同一臺機器上你要與訪問它?如果是後者,則需要以某種不涉及將加密密鑰存儲在同一臺計算機上的方式進行加密(就好像它們已進入您的計算機一樣,它們可以找到加密密鑰)。有關更多具體細節,請參閱How to encrypt a specific column in a MySQL table?。只是不存儲在數據庫服務器上的「鑰匙」 - 無論是將其存儲在單獨的應用程序服務器上,或在紙上:)

+0

實際上,我的數據庫將與我將託管我的應用程序的服務器位於同一臺服務器上。 是否有任何方法通過簡單地使用密鑰來限制對錶的訪問來鎖定表? –

+0

這不完全是你在原始問題中提出的問題 - 表!=字段。當然有一種限制訪問表的方法(限制對某些用戶的訪問 - 例如http://dev.mysql.com/doc/refman/5.0/en/security.html)。但是,您正在想象有人盜用您的數據庫;如果是這樣,我覺得他們很可能會使用特權帳戶(如果他們在MYSQL中發現安全漏洞,通常是管理員的帳戶)。因此,使用存儲在別處的AES加密密鑰對字段進行加密仍然更好。 – Joe

+0

是的,其實兩者中的任何一個都適合我(鎖定表或字段)。 你可以分享一些關於如何使用AES這種問題的鏈接? –