asp.net - 保护 ASP.Net 站点的 SQL 数据库帐户

标签 asp.net sql-server database security

我正在尝试为我们的 .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/

相关文章:

c# - 将计算列用于 ID 时出现存储过程错误

html - 还可以在带有图片标签的 whatsapp 上分享网站链接

mysql - 如何简化带有很多 “case when then else …” 的 sql

sql-server - 将多个客户端与服务器同步的最佳方法

mysql - 偶尔出现的新列 : new columns or separate table or json column

javascript - 通过 javascript 根据 Active Directory 获取当前经过身份验证的用户

asp.net - 如何使用 ASP.NET 身份模型进行 WCF 服务授权和身份验证

SQL Server MERGE 语句在 using 子句中包含 "DUAL"

php - MS SQL Server 上的 ODBC 查询仅在 PHP PDO (FreeTDS) 中返回前 255 个字符

sql - 与稍后提供的一起加入