C# 修改DLL封装的数据库连接字符串及常见加密存储方式咨询
连接字符串常见存储位置
你提供的DLL代码中GetConnection方法传入的是连接名conABC、conCDE,说明底层逻辑是通过该名称读取对应存储位置的连接字符串,你可以优先查找以下位置:
- .NET Framework项目默认配置文件:Web项目对应
web.config,桌面/控制台项目对应app.config,连接字符串通常存放在<connectionStrings>节点下,conABC即为节点的name属性值。 - .NET Core/.NET 5+项目默认配置文件:通常为
appsettings.json,连接字符串存放在ConnectionStrings配置段下。 - 独立自定义配置文件:部分项目会把敏感配置拆分到单独文件,常见后缀包括
.config、.json、.xml,也可能是自定义后缀的加密文件,一般存放在程序根目录、bin目录的专属配置文件夹中。 - 系统级存储:Windows环境下可能存储在注册表、IIS站点配置区、Windows凭据管理器中。
- 环境变量:容器化或云原生部署的项目,通常会把连接字符串配置在系统环境变量或者容器运行时环境变量中。
- DLL内嵌资源:少数项目会把加密后的连接字符串作为内嵌资源打包到DLL内,需要反编译后提取资源段解密才能获取。
连接字符串常用加密方式
- 配置节原生加密:.NET Framework自带
aspnet_regiis.exe工具,支持对web.config/app.config的<connectionStrings>节点做DPAPI或RSA加密,加密后节点内容为乱码,.NET运行时可自动解密读取。 - 对称加密:常用算法包括AES、DES、3DES,加密后的字符串通常为Base64格式存储,程序读取后通过内置密钥解密得到明文连接串。
- 非对称加密:使用RSA等非对称算法,加密用公钥,解密用私钥,私钥通常存储在程序内部或系统证书存储区。
- DPAPI加密:基于Windows系统的用户或机器权限加密,只有对应机器或登录用户才能解密,加密后的内容仅能在对应环境使用。
快速排查技巧
你可以直接在项目根目录、程序运行输出目录搜索包含conABC、conCDE关键字的文件,优先排查上述默认配置文件,大部分场景下都能找到对应的配置项。
内容的提问来源于stack exchange,提问作者Kingsley Obeng
相关产品推荐
相关产品推荐

