发布MVC网站,如何密码保护数据库?

时间:2012-08-27 11:59:31

标签: asp.net-mvc vb.net asp.net-mvc-3

以下是我的连接字符串:

  <connectionStrings>
    <add name="ArticleDbContext" connectionString="Data Source=|DataDirectory|MyBlog.sdf" providerName="System.Data.SqlServerCe.4.0" />
    <add name="BlogDbContext" connectionString="Data Source=|DataDirectory|MyBlog.sdf" providerName="System.Data.SqlServerCe.4.0" />
    <add name="CompanyDbContext" connectionString="Data Source=|DataDirectory|MyBlog.sdf" providerName="System.Data.SqlServerCe.4.0" />
    <add name="UserProfileDbContext" connectionString="Data Source=|DataDirectory|MyBlog.sdf" providerName="System.Data.SqlServerCe.4.0" />
    <add name="ApplicationServices" connectionString="Data Source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb1.mdf;User Instance=true" providerName="System.Data.SqlClient" />
  </connectionStrings>

我正在阅读有关实施应用程序的注意事项的http://msdn.microsoft.com/en-us/library/ms181873(v=vs.90).aspx

我相信我应该在这些密码上加密然后加密。这是正确的,我如何在事后做到这一点?在我的web.config文件中放置密码有什么问题吗?我读过一些关于反编译器能够读取密码的内容......这是真正的威胁吗?我该怎么做才能保护这个应用程序?

2 个答案:

答案 0 :(得分:3)

您应该始终加密存储在配置文件中的敏感信息。您可以通过程序化或aspnet_regiis进行此操作(有关详情,请参阅docs)。

为什么?

因为人们可以通过不同的漏洞以纯文本格式下载web.config文件,然后他们就可以读取所有连接字符串,用户名,密码等。

可能的攻击列表:

  • MS10-070 video
  • 计算机上的任何其他用户都可以阅读web.config。这为操作系统本身的所有已披露和未披露的攻击添加了一个巨大的列表。
  • 攻击IIS FTP和后续的web.config传输,例如this one

答案 1 :(得分:1)

可能不是。 web.config文件中的密码通常会显示用于连接到远程SQL Server(或其他数据库)的身份验证详细信息。这是你想要保护的东西。

您的数据库文件属于文件种类(存储在本地),您的SQL Express数据库可以使用集成安全性访问,因此我可以说您可以保留原样。