最好的方法是在tomcat中定義JDBC數據存儲,然後在Web應用程序中查找它。以下示例是從tomcat documentation無恥複製的。這樣您的應用程序中就沒有任何密碼。配置由tomcat管理員完成,而不是由web應用程序開發人員完成。
上下文:
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="javauser" password="javadude"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/javatest"/>
的web.xml
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/TestDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
test.jsp的
<sql:query var="rs" dataSource="jdbc/TestDB">
select id, foo, bar from testdata
</sql:query>
的servlet
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/TestDB");
Connection conn = ds.getConnection();
關於您的安全要求:這很難,因爲密碼也是明文。您可以限制訪問權限,以便只有Web容器可以讀取它。加密密碼不適用於對稱密碼,因爲攻擊者也可以得到它們。而且不對稱的密碼 - 他也可以獲得解碼密鑰。所以你必須設置攻擊者不會看到配置文件內容的環境。如果他是根,那麼一切都會丟失。
http://java.dzone.com/articles/storing-passwords-java-web希望它有幫助 – Shriram
@Shriram它解釋了我認爲散列用戶密碼。我需要知道我可以在JDBC連接字符串中使用密碼字段的散列輸入。 – Sajirupee
cfg中的散列(可用於驗證)不會比普通密碼更安全(對於私鑰,對稱加密密碼存儲也是如此)。你應該問問誰寫了關於它的要求的人。 – Vatev