我正在尝试为我们的 .Net 网站保护 MSSQL 数据库。
我想将数据库分成不同的模式,这样我们就有了一个像“帐户”这样的模式,它包含个人信息,一个像“公共(public)”这样的模式,它有通用的公共(public)内容数据。
这些模式中的每一个都可以使用不同的 SQL 用户帐户访问,并且它们每个都需要自己的 DBML,因为它们需要单独的连接字符串(我们使用的是 LINQtoSQL)。
我的同事声称,由于我们的 web.config 中只有这两个帐户,因此这种设计并不比仅使用一个有权访问整个数据库的 SQL 服务器帐户更安全。无需分离模式,因为我们没有使用基于 Windows 的身份验证。
所以我的问题是谁是正确的?将数据库分成模式会更安全吗?或者这是浪费时间,因为两个 SQL 帐户都位于 web.config 中(即使已加密)?
最佳答案
您的同事在一个层面上错了,在另一个层面上是对的。
按照您的建议将数据库分解为模式将有助于攻击者找到诸如 SQL 注入(inject)漏洞之类的东西。如果你勤于设置权限,那就是……
但是,如果有人设法进入实际的文件系统并可以红色 web.config,那么像这样拆分架构不会带来额外的好处。
您需要考虑所有可能的层。
如果您还没有,请查看这个很棒的资源:
http://msdn.microsoft.com/en-us/library/ms998372.aspx
此外,尝试使用谷歌搜索将您的连接字符串存储在注册表中。有一些很好的引用资料,如果有人进入文件系统并可以读取您的 web.config,这将有助于保护您。
最后,不要忘记加密您的 web.config...
关于asp.net - 保护 ASP.Net 站点的 SQL 数据库帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1445815/