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

时间:2017-04-12 07:24:39

标签: sql-server database winforms login

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

"Database=DBADAS;Server=TMT123\\SQLEXPRESS;User ID=user; Password=*****;

使用登录对话框连接到数据库后,我们会检查数据库中用户表中是否存在用户和密码。

我现在的问题是,这是一个好习惯吗?因为基本上在连接字符串中存在破解服务器所需的所有信息。

2 个答案:

答案 0 :(得分:2)

加密Web.Config

  1. 以管理员权限打开命令提示符
  2. 在CommandPrompt中,输入:

    cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
    
  3. 如果您的网络配置位于“D:\ Articles \ EncryptWebConfig”目录路径中,请输入以下内容以加密ConnectionString:

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

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

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

    参考: https://www.codeproject.com/Tips/795135/Encrypt-ConnectionString-in-Web-Config

答案 1 :(得分:1)

有几种方法可以安全地解决这个问题。由于它是Winforms应用程序而非Web应用程序,因此您的大多数安全风险都涉及已经在您的网络中查看连接字符串的人。这增加了一层安全性。

<强> 1。硬编码 您可以硬编码将用户提取到DLL中的连接字符串,并使您的应用程序依赖于该DLL。我只是建议这个,因为它听起来像&#34;泛型用户&#34;密码是永久性的;否则,每次更改密码时都必须重新编译代码,然后再次部署。但是,这是非常安全的,因为该值不以纯文本格式存储。

<强> 2。 App.Config中 您可以将其粘贴在配置文件中。在安全的网络中,这可能是最通用的选项,因为您可以存储多个字符串并轻松更新它们而无需更新完整的应用程序。这与&#34; DebugMode&#34;等设置一起顺利进行。使用App.Config或其他XML文件是理想的,但您也可以滚动快速且脏的.txt文件。

第3。数据库 可能是最安全的方式,因为您可以加密数据库并对程序进行编码,以通过使用不相关的登录来从该数据库中获取其连接字符串和登录信息。这允许在用户尚未登录时更好地控制应用程序可以达到的内容。它还防止软件在网络外操作,这可能是期望的。

<强> 4。内部API 由于API和您的应用可以交换验证密钥以查看您的应用是否具有尝试连接的权限,因此使用单独的应用程序提供此数据会将用户功能与您的问题分开。这是我个人的最爱,但显然是最需要设置的工作。

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

同样,由于它是一个内部的非网络应用程序,我不会过多担心连接字符串的纯文本;如果有人已经深入你的网络,你可能已经有了更大的问题。我不会将它作为纯文本文件保留在本地目录中,但是高于此范围的任何安​​全级别都可以为您的目的所接受。