C#——Web.config中的Integrated Security=SSPI

问题由来

之前在进行机房收费系统个人重构的时候,配置文件访问数据库,用的是这种方式,如:

   string="server=localhost;database=pubs;uid=sa;password=123456"

这两天在学习MVC的时候,在设置配置文件的时候发现,链接数据库用的是另外一种方式:

connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-MVCMovie-20141126170450;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\Movies.mdf" providerName="System.Data.SqlClient"

重点就在Integrated Security=SSPI这一句,有什么区别么??

数据库的两种身份验证模式

Windows身份验证模式

安装时,若按默认操作(windows身份验证模式),则sql server会将当前的windows账户及其密码作为windows验证模式的内嵌登录名(BUILTIN\Administrators)和密码,从而在使用windows验证模式时,不需要指定登录名和密码。当然,在此也可以指定其他的windows账户作为windows验证模式的内嵌登录名,按照提示修改即可。Windows验证模式只允许以windows验证模式进行连接,即便SSMS中可以选择sql
server模式,但会导致连接失败。

混合身份验证模式

如果安装时选择“混合模式”,则必须指定sa登录名的密码,从而添加了一个sql server身份验证的登录名。

两种方式的不同

windows 身份验证相对于混合模式更加安全,使用本连接模式时候,sql server仅根据用户的windows权限来进行身份验证,我们称为“信任连接”,但是在远程连接的时候会因NTML验证的缘故,无法登陆。

混合模式验证就比较复杂,当本地用户访问sql时候采用windows身份验证建立信任连接,当远程用户访问时由于未通过windows认证,而进行sql server认证(使用sa的用户也可以登录sql),建立“非信任连接”,从而使得远程用户也可以登录。

准确来说,混合身份验证模式,也就是基于Windows身份验证和SQL Server身份混合验证。在这个模式中,系统会判断账号在Windows操作系统下是否可信,对于可信连接,系统直接采用Windows身份验证机制,而非可信连接,这个连接不仅包括远程用户还包括本地用户,SQL Server 会自动通过账户的存在性和密码的匹配来进行验证。

常见理解误区

windows验证模式和sql server验证模式的登录名,区别在于权限,这是错误的。这两种验证方式的区别,并不是在于权限。并没有谁的权限高、谁的权限低之说。不管是windows验证方式的默认登录名、sql server方式的sa或其他自己添加的登录名,只要在sql server中为该登录名设置了相应数据库及表的权限,他就具有对于操作权限。

Intergrated Security =SSPI

SSPI:Security Support Provider Interface(Microsoft安全支持提供器接口),定义得较全面的公用API,用来获得验证、信息完整性、信息隐私等集成安全服务,以及用于所有分布式应用程序协议的安全方面的服务。

===========================================

Integrated Security 身份验证方式

当为False时,将在连接中指定用户ID和密码。

当为True时,将使用当前的Windows帐户凭据进行身份验证。

可识别的值为True、False、Yes、No以及与True等效的SSPI。

============================================

总结

为了保证数据库的安全建议尽可能使用Windows验证模式,Windows 身份验证使用一系列加密消息验证 SQL Server 中的用户。 使用 SQL Server 登录时,会通过网络传递 SQL Server 登录名和密码,这样会降低它们的安全性。

时间: 2024-07-31 05:01:02

C#——Web.config中的Integrated Security=SSPI的相关文章

关于SQL连接语句中的Integrated Security=SSPI/ture/false

文章转载来源   http://www.linuxidc.com/Linux/2015-02/114085.htm 今天做c#连接数据库的时候像平时一样使用普通的链接方式 eg:connstr = "Server=***;uid=***;pwd=***;database=***;":还尝试一很多其他的连接方式,都没有成功连接上数据库,因为链接的是公司的数据库,其他人说要加域...(并不懂是啥),最后加了一个Integrated Security = SSPI;去掉用户名和密码项,可以成

asp.net中关于Microsoft 信息完整性、隐私性等集成信息安全服务服务 integrated security=SSPI

string [email protected]"server=(local)\SQLExpress;database=AdventureWorks;integrated security=SSPI";中的 integrated security=SSPI   安全支持提供器接口是定义食物比较全面的公用API,用来验证.Microsoft信息完整性.信息隐私等集成安全服务,以及用于所有分布式应用程序协议的安全方面的服务.应用程序协议的设计者能够利用该接口获得不同的安全性服务而不必修改协

转 web.config中配置数据库连接的两种方式

在网站开发中,数据库操作是经常要用到的操作,ASP.NET中一般做法是在web.config中配置数据库连接代码,然后在程序中调用数据库连接代码,这样做的好处就是当数据库连接代码需要改变的时候,我们只要修改web.config中的数据库连接代码即可,而不必在修改每一个页面中的数据库连接代码. 在ASP.Net中有两种配置数据库连接代码的方式,它们分别是 appSettings 和 connectionStrings .在使用 appSettings 和 connectionStrings 配置数

c#引用web.config中的ConnectionString

c#引用web.config中的ConnectionString <connectionStrings>  <add name="JKXTConnectionString" connectionString="Data Source=CHF;Initial Catalog=JKXT;User ID=sa" providerName="System.Data.SqlClient" />  <add name="

利用ASP.NET加密和解密Web.config中连接字符串

介绍 这篇文章我将介绍如何利用ASP.NET来加密和解密Web.config中连接字符串 背景描述 在以前的博客中,我写了许多关于介绍 Asp.net, Gridview, SQL Server, Ajax, JavaScript等的文章.大多数情况下,我都把数据库的连接字符串放在了web.config中.其中包含许多敏感信息,包括连接数据库的用户名密码等.然而我们在web.config和machine.config中以纯文本的方式保存密码安全吗? 如果我们的程序只是部署在内部服务器中,这应该没

ASP.NET web.config中的连接字符串

在ASP.NET的web.config中,可以用两种方式来写连接字符串的配置. 1 <configuration> 2 <appSettings> 3 <add key="connstr1" value="Data Source=.;Initial Catalog=DBName;Integrated Security=true"/> 4 <add key="connstr2" value="..

web.config中配置数据库(多数据)连接的两种方式

这是我的第一篇文章,既然是第一篇了,那就从最基础的只是说起--web.config中配置数据库连接. 网上有很多这方面的资料,但发现并没有一篇从头到位很清楚明了说完的,今天就把我的整理写在这里吧. 在网站开发中,数据库操作是经常要用到的操作,ASP.NET中一般做法是在web.config中配置数据库连接代码,然后在程序中调用数据库连接代码,这样做的好处就是当数据库连接代码需要改变的时候,我们只要修改web.config中的数据库连接代码即可,而不必在修改每一个页面中的数据库连接代码. 在ASP

加密web.config中的邮件配置mailSettings

加密: 在命令提示符下键入: aspnet_regiis -pef connectionStrings 要加密的web.config完整路经 演示样例:C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>aspnet_regiis -pef "connectionStrings" "D:\Scode\cpb2cNew\branches\trunk\src\client\CP.Client" 解密: 在命

WCF项目问题2-无法激活服务,因为它需要 ASP.NET 兼容性。没有未此应用程序启用 ASP.NET 兼容性。请在 web.config 中启用 ASP.NET 兼容性,或将 AspNetCompatibilityRequirementsAttribute.AspNetCompatibilityRequirementsMode 属性设置为 Required 以外的值。

无法激活服务,因为它需要 ASP.NET 兼容性.没有未此应用程序启用 ASP.NET 兼容性.请在 web.config 中启用 ASP.NET 兼容性,或将 AspNetCompatibilityRequirementsAttribute.AspNetCompatibilityRequirementsMode 属性设置为 Required 以外的值. 在web.config中添加 aspNetCompatibilityEnabled="true"属性即可,如下: <servi