2
我的應用程序使用一些屬性文件來存儲密碼,URL和其他應用程序數據。我想從源代碼中提取這些文件的細節。這樣做的最佳做法是什麼?如何隱藏和抽象Java屬性文件?
我正在考慮創建Maven中的一個插件,它依賴於應用程序部署到將拉低一組特定的財產性的環境,但是說一個數據庫,這似乎是一個大量的工作來實現這一目標。歡迎大家提出意見。主要目標是從代碼庫中刪除敏感數據。
感謝,
我的應用程序使用一些屬性文件來存儲密碼,URL和其他應用程序數據。我想從源代碼中提取這些文件的細節。這樣做的最佳做法是什麼?如何隱藏和抽象Java屬性文件?
我正在考慮創建Maven中的一個插件,它依賴於應用程序部署到將拉低一組特定的財產性的環境,但是說一個數據庫,這似乎是一個大量的工作來實現這一目標。歡迎大家提出意見。主要目標是從代碼庫中刪除敏感數據。
感謝,
我用Maven filtering和配置文件來做到這一點。在我的屬性文件我只是使用像database.password=${database.password}
佔位符,然後我創造我的本地Maven設置的配置文件具有database.password
屬性設置類似
<profiles>
<profile>
<id>development</id>
<properties>
<database.password>MySuperSecretPassword</database.password>
</properties>
</profile>
<profiles>
所以當我運行mvn install -P development
它交換與我的密碼的佔位符。 你可以找到更多的detailed example here,雖然看起來他保留他的個人資料在pom.xml而不是他的本地maven設置文件(可能爲了簡單起見)
我承認做同樣的事情,但必須提及的是,我們這種方法確實沒有堵塞任何安全漏洞。你最後的人工製品(JAR /戰爭/耳朵)將包含* MySuperSecretPassword *嵌入在一個或多個濾除的屬性文件。如果你能與那麼這種做法住的明文works.Ideally這將是很好的過濾和加密和那麼當你的應用程序需要使用時,你的應用程序可以解密該屬性(我不知道寫這樣的解決方案)。 – Dan 2013-03-29 18:33:47
我發現我這樣做的原因是從代碼庫(一個承載多個團隊項目的SVN服務器)中刪除明文密碼。如果您擔心人們從已部署的人工產物中提取密碼,那麼更大的安全問題是爲什麼不信任的人能夠訪問已部署的人工產物? 我很高興,因爲我用它的WAR部署到具有訪問控制服務器,我知道會能夠看到已經知道他們的屬性誰的人使用這種方法。 – GuessBurger 2013-03-30 14:12:39