2012-07-02 43 views
0

敏感的SQL信息進行加密可以說,我想連接到Oracle數據庫在我的Java應用程序,我將不得不寫下來的JDBC URL,把用戶名和密碼,該數據庫,我不認識路在沒有程序源的情況下破解這個密碼,但是我必須加密嗎?有沒有加密的方法?那麼sql注入呢?如何在Java

+0

如果您不希望用戶有權訪問該密碼,請不要將其提供給他們,不管以何種形式。如果你不希望他們能夠訪問數據庫,那麼寫一個前端進程,作爲數據庫的門衛。應用程序*他們只會與門衛聯繫,並根據實際的業務操作與其進行對話。守門員確認它實際上是允許的動作,然後*然後*執行相應的數據庫動作。 –

+0

它是什麼樣的java應用程序?它在哪裏運行? – Qwerky

回答

3

你沒有真正提供足夠的信息來了解你充分的情況下,但我會試着打破你可能想知道一些一般的東西。首先,數據庫驅動程序將需要提供未加密的用戶名/密碼,所以如果你擔心這些信息在內存中未加密,它並不會真正起作用。總而言之,獲取對數據庫的訪問通常比嘗試掃描內存中的用戶名/密碼字符串更簡單。

如果您正在製作一個應用程序,您將分發字節碼(.class文件或.jar文件),那麼人們可以在技術上檢查該字節碼並查找硬編碼的字符串,例如用戶名/密碼(但可能很難確定它們究竟是什麼,即使你有字符串)。

如果你正在做的是將Web服務器上運行的應用程序,應該沒有人可以訪問您的字節碼或你的記憶,無論如何,所以它真的不應該是可能的(除非他們已經黑客攻擊你的服務器),讓他們得到這些信息。但是,您可能希望將屬性文件中的數據庫連接信息外部化,以便管理軟件的人可以輕鬆配置它,但根據您的要求,情況可能並非如此。

SQL注入是一個完全不同的問題,是有點過於廣泛,我嘗試在這裏介紹。我建議你仔細閱讀處理它的方法,但是很大程度上,它將歸結爲使用預準備語句,而不僅僅是執行SQL(這通常會增加你的性能)。

0

您可以encrypt密碼。當你構建一個JDBC URL,檢索這些信息以及decrypt它使用AES algorithm其存儲在一個數據庫或安全區域。 的更多信息可以從這個環節可以了: Java 256-bit AES Password-Based Encryption

SQL注入是一種別樣的vulnerabilities存在的代碼,因爲沒有做用來構造SQL語句的數據驗證。

+1

如果您首先需要密碼才能訪問數據庫,您將如何從數據庫獲取加密密碼? – jtahlborn

+0

@jtahlborn,使用單獨的表格來存儲加密的密碼。這可以是一次性活動。隨後,只要需要,從該數據庫獲取並解密它。 – UVM

+0

單獨的表?在同一個數據庫中?使用單獨的表格不能解決任何問題。 – jtahlborn

1

進出口工作在Java中的登記表上,我遇到了同樣的問題。唯一有意義的是使用php表單註冊,這樣他們就不會訪問數據庫,只能通過服務器進行通信。與其給用戶授予數據庫權限,我不知道如何設想一種單向加密方法,該方法只有在用戶輸入密碼時纔將哈希值加密後才能將密碼與哈希匹配。通過對黑客行爲的一些瞭解,我認爲用戶可以訪問的任何信息都是安全漏洞。主持人曾多次表示,不要以純文本形式在源代碼中存儲密碼。 SQL有一些限制數據庫權限的方法,您可以根據需要刪除信息。

下面是我有點相信,但它基本上留下自己一個書面記錄,其中的哈希必須從隱藏的地方一個zip文件中提取,在身份驗證檢索,它可以被添加到網站

https://www.pkware.com/software/developer-tools/sdk/toolkit-for-java鏈接