CS架构下的应用程序,数据库连接字符串一般保存在App.Config中。现在有如下问题:
如何保证数据库的连接信息不被泄露?
像ASP.NET那样,用aspnet_regsql -pe进行加密?攻击者只需要用一遍aspnet_regsql -pd就可以轻松解密。
在代码中硬编码加密步骤?把密钥硬编码在dll中?攻击者只要用Reflector反编译一下就可以看到解密密钥。
采用和用户生理特征相关的加密手段?比如指纹,视网膜。这样会给用户带来不便,无论是谁使用该CS系统时,指纹登记人都要在场。
采用USBKey之类的密钥容器,使用人连接数据库时需要插入USBKEY解密连接字符串?既然该容器能在用户登录时解密字符串,那么攻击者也可以在其他时候随时解密字符串。
不知道大家有没有好的方案,保护CS架构下的数据库连接内容?
使用域身份验证。
这个问题本质上是如何安全保存连接字符串。
最直接简单的方式就是以你们自己的密码使用对称加密算法(DES等)加密后保存在config中,程序启动时再解密并缓存起来就可以了。
aspnet_regsql -pe 好像是要密码参数的,我忘记了。
CS 很少直接连接数据库的。如果数据用正版,买许可不是一般的贵,而且性能也不高,而且无法调优。
使用加密狗,其它的都不需要
保存到properites/setings.setings中
可以加密。保存到注册表中比较安全!
把数据的操作交给服务器来处理,所以链接字符串也就在服务器端了。只需验证客户端登录状态