0

我在 ASP.net 应用程序中使用集成安全性,IIS 和 SQL Server 都托管在运行 Windows Server 2008 R2 的同一台服务器上。

是否可以允许用户通过网络访问应用程序并登录用户,但不允许他们直接或通过 SQL Server Management Studio 访问数据库?

我正在尝试保护数据库访问,因为我的应用程序将部署在客户端的服务器上。

这是我目前正在使用的连接字符串

<add connectionString="Server=.\sqlexpress;Database=DB89akwA;Integrated Security=true" name="LocalSqlServer" providerName="System.Data.SqlClient" />

<add connectionString="Server=.\sqlexpress;Database=DB89akwA;Integrated Security=true" name="MainAppConnectionString" providerName="System.Data.SqlClient" />

这是我当前使用的两个连接字符串,一个用于 ASP.net 身份验证,第二个用于我的应用程序。这两个字符串是相同的并且属于同一个数据库。

有什么建议么?

4

2 回答 2

2

不可能“保护”在客户场所运行的数据库。客户端的工作人员可以从 ASP.Net 连接字符串中获取密码。域管理员始终可以访问数据库(有一篇实际的 MSDN 文章描述了该过程:当系统管理员被锁定时连接到 SQL Server)。

如果您想隐藏您认为您的数据库具有的知识产权,那么您唯一的解决方案是不在客户端部署数据库(例如使用 SQL Azure 之类的托管数据库)。

如果您只是想防止客户端干扰数据库,您可以在合同中规定。审计和检测干扰可能的。

于 2012-07-26T05:29:15.920 回答
-2

是的,这是完全可能的。使用集成安全性登录到 ASP.NET 的人员无法使用相同的凭据登录到 SQL Server。两者完全断开。仅当 SQL Server 已设置为允许他们访问时才有可能。

我的建议是创建 SQL 登录名和用户,并且只允许他们访问 SQL Server。在你的应用程序中,当你创建连接字符串时,不要将integrated security设置为true,让用户输入自己的Sql用户名和密码来访问数据库。

于 2012-07-26T05:20:50.347 回答