通常情況下我們在使用IBatisNet的時候,配置文件和映射文件都是暴露在外的,如果能進入到伺服器,那麼你的程式的操作資料庫的SQL語句,資料庫連接字元串等信息都將很輕鬆的被看到,這樣是很危險的。然而IBatisnet自身也沒有提供配置文件直接加密的方法,但我們可以用變通的方式來儘可能的保護這些文件 ...
通常情況下我們在使用IBatisNet的時候,配置文件和映射文件都是暴露在外的,如果能進入到伺服器,那麼你的程式的操作資料庫的SQL語句,資料庫連接字元串等信息都將很輕鬆的被看到,這樣是很危險的。然而IBatisnet自身也沒有提供配置文件直接加密的方法,但我們可以用變通的方式來儘可能的保護這些文件中的信息。IBatisnet的映射文件等可以指定為內嵌的資源,利用這個我們可以把一些敏感信息寫到另外一個配置文件中,並設置這個配置文件的Build Action為embedded Resource。具體操作如下:
一、假設我們映射文件的路徑為 ~@Maps/,我們將所有的映射文件都設置為“內嵌的資源”,SqlMap.config文件直接在根目錄下。
二、建立一個properties.config文件,添加一些敏感信息(即不能直接讓別人看到的信息)。如下:
<?xml version="1.0" encoding="utf-8" ?> <settings> <!-- User application and configured property settings go here.--> <!-- Example: <add key="settingName" value="settingValue"/> --> <add key="provider" value="sqlServer1.1" /> <add key="connectionString" value="server=.;database=DocumentSystem;uid=sa;pwd=" /> <add key="root" value="TVSystem.Web._Maps." /> <add key="assembly" value="TVSystem.Web" /> </settings>
三、SqlMap.config文件的配置
<?xml version="1.0" encoding="utf-8"?> <sqlMapConfig xmlns="http://ibatis.apache.org/dataMapper" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <properties embedded="TVSystem.Web.properties.config" /> <settings> <setting useStatementNamespaces="false"/> </settings> <providers resource="providers.config"/> <!-- Database connection information --> <database> <provider name="${provider}"/> <dataSource name="DocumentSystem" connectionString="${connectionString}"/> </database> <sqlMaps> <sqlMap embedded="${root}Department.xml,${assembly}" /> <sqlMap embedded="${root}Stream.xml,${assembly}" /> <sqlMap embedded="${root}Employees.xml,${assembly}" /> <sqlMap embedded="${root}Relations.xml,${assembly}" /> </sqlMaps> </sqlMapConfig>
這樣發佈後的代碼中,只能看到SqlMap.config中的內容,映射文件和資料庫連接字元串等信息就被編譯到DLL中去了。
參考:原文鏈接