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中去了。
参考:原文链接
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
2013-08-19 WinForm 代码实现以管理员身份运行
2010-08-19 零起点学习WPF之《WPF揭秘》读书笔记(1)