我正在研究一個將由學校使用的應用程序。每所學校都將建立他們的數據庫。每所學校都會嚮應用程序提供他們自己的「設置」文件。設置文件將包含創建設置文件的特定學校的數據庫網址。這是爲了讓使用該應用程序的學生如果想連接到不同的數據庫,可以加載不同的設置文件。應用程序連接到數據庫
我的問題是,我如何保護用於連接到數據庫的用戶名和密碼?所以,只有該應用程序具有讀取和寫入數據庫的權限。並且該應用程序僅對該特定學校有讀寫權限?
如果您需要更多信息,請讓我知道。
感謝
我正在研究一個將由學校使用的應用程序。每所學校都將建立他們的數據庫。每所學校都會嚮應用程序提供他們自己的「設置」文件。設置文件將包含創建設置文件的特定學校的數據庫網址。這是爲了讓使用該應用程序的學生如果想連接到不同的數據庫,可以加載不同的設置文件。應用程序連接到數據庫
我的問題是,我如何保護用於連接到數據庫的用戶名和密碼?所以,只有該應用程序具有讀取和寫入數據庫的權限。並且該應用程序僅對該特定學校有讀寫權限?
如果您需要更多信息,請讓我知道。
感謝
看看Jasypt,它是一個Java庫,允許開發者基本的加密功能添加到他/她以最少的投入項目,並沒有對密碼學是如何工作的,需要有很深的造詣。
如果你使用Spring,你可以定義你的db.properties
爲:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/yourdb
jdbc.username=userName
jdbc.password=ENC(A6L729KukPEx7Ps8didIUWb01fdBRh7d)
與Jasypt和Spring的配置它:
<bean class="org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer">
<constructor-arg>
<bean class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
<property name="config">
<bean class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
<property name="algorithm" value="PBEWithMD5AndDES" />
<property name="passwordEnvName" value="APP_ENCRYPTION_PASSWORD" />
</bean>
</property>
</bean>
</constructor-arg>
<property name="locations">
<list>
<value>classpath:/META-INF/props/db/db.properties</value>
</list>
</property>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
這將隱藏實際的密碼(你可以做username
)與學生相同,所以他們將無法從查看屬性文件中派生連接字符串。
如果你使用的不是春天,這裏是一個Jasypt guide才達到相同的「手動」
我不確定春天是什麼,但這完全是桌面應用程序。這是否意味着我將不得不做你提到的手動版本? – prolink007
@ prolink007,它是否是桌面應用程序,Web應用程序或守護程序並不重要。如果你願意,你仍然可以使用Spring。看看[doc](http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/htmlsingle/spring-framework-reference.html),起初它可能會令人難以置信,因爲Spring做了很多很酷的事情。但是,如果您目前不想要學習的東西,使用Jasypt各種密碼加密器(例如BasicPasswordEncryptor,StrongPasswordEncryptor等)「手動」加密憑據也是一個非常穩固的選項 – tolitius
讓你的應用程序是Web應用程序或桌面應用程序?你想加密應用程序中的密碼?設置文件只包含數據庫URL但沒有用戶/密碼信息,對嗎?順便說一句,你可以創建一個特定的數據庫用戶數據庫,所有的數據庫都在同一個數據庫服務器 – Tommy
桌面,我想保護應用程序用來驗證數據庫的用戶名和密碼,設置文件只包含數據庫網址。應用程序用戶名和密碼用於爲應用程序提供數據庫中的讀/寫權限。 – prolink007