Sql server C#SQL连接字符串最佳实践

Sql server C#SQL连接字符串最佳实践,sql-server,database,winforms,login,Sql Server,Database,Winforms,Login,我有一个winforms应用程序,它使用连接字符串和通用用户连接到数据库 "Database=DBADAS;Server=TMT123\\SQLEXPRESS;User ID=user; Password=*****; 通过登录对话框连接到数据库后,我们检查数据库的用户表中是否存在用户和密码 我现在的问题是,这是否是一种好的做法?因为基本上连接字符串中包含破解服务器所需的所有信息。加密Web.Config 以管理员权限打开命令提示符 在命令提示下,输入: cd C:\Windows\Micro

我有一个winforms应用程序,它使用连接字符串和通用用户连接到数据库

"Database=DBADAS;Server=TMT123\\SQLEXPRESS;User ID=user; Password=*****;
通过登录对话框连接到数据库后,我们检查数据库的用户表中是否存在用户和密码


我现在的问题是,这是否是一种好的做法?因为基本上连接字符串中包含破解服务器所需的所有信息。

加密Web.Config

  • 以管理员权限打开命令提示符
  • 在命令提示下,输入:

    cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
    
  • 如果您的web配置位于“D:\Articles\EncryptWebConfig”目录路径中,请输入以下内容以加密连接字符串:

    ASPNET_REGIIS -pef "connectionStrings" "D:\Articles\EncryptWebConfig" 
    
  • 将Aspnet_regiis.exe工具与–pef选项一起使用,并如上所示指定应用程序路径

    注意:参数“ConnectionString”区分大小写

    对于Winforms:您需要将app.config重命名为web.config使用步骤1到3对其进行加密,然后再次将其重命名为app.config


    参考:

    有几种安全的方法。由于它是Winforms应用程序,而不是web应用程序,因此您的大多数安全风险涉及网络中已有人偷看连接字符串。这本身就增加了一层安全性

    1。硬编码 您可以硬编码将用户提取到DLL中的连接字符串,并使应用程序依赖于该DLL。我之所以建议这样做,是因为听起来“通用用户”密码是永久性的;否则,您必须在每次更改密码时重新编译代码,然后再次部署。但是,这是非常安全的,因为值不是以纯文本形式存储的

    2。App.Config 您可以将其粘贴到配置文件中。在安全网络中,这可能是最通用的选项,因为您可以存储多个字符串并轻松地更新它们,而无需更新整个应用程序。这与“DebugMode”设置等设置配合得很好。使用App.Config或其他XML文件是理想的,但您也可以滚动一个快速脏的.txt文件

    3。数据库 这可能是最安全的方法,因为您可以加密数据库并编写程序代码,通过使用不相关的登录名从该数据库获取连接字符串和登录信息。这允许在用户尚未登录时更好地控制应用程序可以访问的内容。它还防止软件在网络之外运行,这可能是需要的

    4。内部API 让一个单独的应用程序为这些数据提供服务会使用户的能力与您的担忧脱节,因为API和您的应用程序可以交换验证密钥,以查看您的应用程序是否具有尝试连接的权限。这是我个人的最爱,但显然是最需要设置的工作

    5。注册表项 根据安装方式的不同,在注册表中嵌入所需的令牌可能效果良好。这保证应用程序需要管理员权限才能安装,并允许您使用Windows安全性限制对配置单元的访问


    再说一次,由于它是一个内部非web应用程序,我不会太担心connectionstring的纯文本;如果有人已经深入到你的人际网络中,你可能已经遇到了更大的问题。我不会让它在本地目录中以纯文本文件的形式浮动,但出于您的目的,上述任何程度的安全性都是可以接受的。

    标记引用Winforms,因此这可能不是web应用程序。您仍然可以使用此方法,您只需将app.config重命名为web.config,然后使用upper方法对其进行加密,然后再次将web.config重命名为app.config。这是一个很好的答案。非常感谢。