Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 没有SQL Server Management Studio的SQL Server集成安全性_Asp.net_Sql Server 2008_Security_Web Config_Integrated Security - Fatal编程技术网

Asp.net 没有SQL Server Management Studio的SQL Server集成安全性

Asp.net 没有SQL Server Management Studio的SQL Server集成安全性,asp.net,sql-server-2008,security,web-config,integrated-security,Asp.net,Sql Server 2008,Security,Web Config,Integrated Security,我在ASP.net应用程序中使用集成安全性,IIS和SQL Server都托管在运行Windows Server 2008 R2的同一台服务器上 是否允许用户通过网络和登录用户访问应用程序,但不允许他们直接或通过SQL Server Management Studio访问数据库 我试图保护数据库访问,因为我的应用程序将部署在客户端的服务器上 这是我当前使用的连接字符串 <add connectionString="Server=.\sqlexpress;Database=DB89akwA;

我在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身份验证,另一个用于我的应用程序。这两个字符串是相同的,并且是同一个数据库的


有什么建议吗?

是的,完全有可能。使用集成安全性登录到ASP.NET的用户不能使用相同的凭据登录到SQL Server。两者都完全断开。只有在SQL Server设置为允许他们访问时,才有可能


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

不可能“保护”客户端上运行的数据库。客户端的工作人员可以从ASP.Net连接字符串获取密码。域管理员可以始终访问数据库(有一篇实际的MSDN文章描述了该过程:)

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


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

如果用户可以访问SQL Server数据库,则无论他们使用什么工具,他(或她)都可以访问该数据库。如果他们能够访问实际数据表以便使用您的应用程序,那么他们还可以使用MS access或Excel连接到同一数据库,并获取(甚至可能操纵)数据操作ASP.NET连接字符串(将其保持为集成安全),而SQL Server连接字符串(使用用户名和密码进行身份验证).... 正如我在回答中已经提到的那样。感谢以下几种方法:(1)不要使用SQL Server集成安全性,因此您的用户无法直接访问;为您的ASP.NET应用程序使用“应用程序”用户,该用户在SQL Server上具有必要的权限;这可以防止“临时”黑客,但任何系统管理员都可以在web.config中看到您的SQL连接字符串,包括user/pwd。另外:对数据库使用权限-“正常”用户只能更改“正常”表(无系统/查找表);使用数据库约束和引用完整性(外键)来防止无效数据(2)如果您真的对安全性有疑虑,请设计您的解决方案,以便任何用户只能使用存储过程访问您的数据;在这种情况下,数据库中的任何用户只需要执行存储过程的权限—他对表没有直接的权限,因此他不能对这些表执行任何操作。这需要大量的重新设计,但是,如果您从一开始就没有这样做如果此人的凭据用于登录SQL Server-您如何阻止他们使用其凭据(显然允许他们使用MS Access连接到SQL Server)访问SQL Server?我是这么说的,只有在SQL Server设置为允许他们访问时,才有可能。仔细阅读我的评论,但这正是OP所说的,不是吗?他正在使用集成安全性(这意味着运行他的应用程序的用户也可以使用他们的Windows身份连接到SQL Server)-如果他真的这样做了,就没有办法阻止这些用户使用MS Access连接到SQL Server…@AtharAnis感谢Athar,但正如marc_s所说,我想问的是SQL Server集成安全性。但是,根据您的回答,这让我想到了一个积极的选择,我可以使用凭据(即用户名和密码)和ASP.Net在集成安全模式下运行SQL Server吗?是否必须将SQL Server迁移到另一台计算机?非常感谢您提供的任何帮助或链接。不,您不需要将SQL迁移到另一台机器@Thr3e,您可以将两者保留在同一台机器上。将SQL与ASP.NET分离以提高安全性是一种很好的做法。特别是在像客户环境这样的环境中,这种方法是不可避免的。我们必须采用这种方法来增加另一层安全性。感谢您的回答,该产品是一个定制的ERP系统,不仅仅是知识产权,我担心数据的错误处理和未经授权的访问。在客户的组织中,人们共享密码是很常见的。我知道我可以向他们解释“不做”和其他合同条款,但我只是想通过一个单独的用户凭证来限制访问,而不是由员工中的其他人使用,从而提高工作效率(你当然可以提高标准。你知道,锁不能把小偷拒之门外,而是让人们保持诚实。看看,你可以编写一个触发器,简单地拒绝SSM的访问。当然,安装并宣传它的存在,这将阻止大多数未经授权的访问尝试。是的,我想我同意你的看法,因为@Athar建议了一个替代方案但以我目前的设置,它不会起作用。所以我标记你的答案,因为它直接回答我的问题,Athar也非常有帮助。