Membership 网站安全相关配置节
引用官方参考文章
ASP.NET成员资格功能是为了管理和授权用户,常常与窗体认证搭配使用,还有一个验证控件像Login,LoginVIew,LoginStatus,LoginName,PasswordRecovery, 和
CreateUserWizard控件。此篇文章教你如何通过很好的编辑配置文件和编写membership 相关类的优化成员管理功能安全.
Securing Connections to a Membership Data Source
Connection Strings
To Keep the connection to your database server secure, you should encrypt connection-string information in the configuration using Protected Configuration. For more information, see Encrypting Configuration Information Using Protected Configuration.
不是每个配置节都是可以被保护配置的,而且在与加密与解密的过程中也是消耗系统性能。下面是我做一个测试的配置文件:
<connectionStrings configProtectionProvider="MichaelProvider"><EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"xmlns="http://www.w3.org/2001/04/xmlenc#"><EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" /><KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#"><EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" /><KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><KeyName>Rsa Key</KeyName></KeyInfo><CipherData><CipherValue>GY5yyrC0LqaoybzzwQStVw9mYuAwPvBCuDY+wPkd8IhBrk9fILYl/iVcVz7aZotAmjQFhK0eXWpDyzFfNcjfHJ2DtFd3z8cN74OAVRW8aBhvUWG6b0T7U2I36Xgscf87CGGGD7ECJbFz6J/Ga/1o5V3aE3Vbdh2iTXhjmoKOtLk=</CipherValue></CipherData></EncryptedKey></KeyInfo><CipherData><CipherValue>h8JFEmdQhYujpVctO6kDPZWd4TEZubXw/4Ye7ZWWdvyb88jdVV8qxbl1vDCD5yfj6PAUQHr6y+tDDzJYVU/WBdAhR7MKTGzuEPDkTOfYn34fkK+PbUCWhnk9Zk1rbRjcAMTY+akmwhOiix6UIa3veBtggVsnjRzqsTkFOcnlySB3vU4jbZJEyJkYRhQ7gViJkYjggjkg7BLbd5l/J+njH0eID7reMsOYHOAD+o7QiglF3TtwdDFy0Rbq48+8A8zy</CipherValue></CipherData></EncryptedData></connectionStrings>
加密后的连接字符串与以往在后台访问的方法是一样的,都是可以通过下面的方法来访问的。当然在加密前自己还是要知道加密的连接字符串的关键字(DefaultConn)
string connectStr = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["DefaultConn"].ConnectionString;
系统会自动把配置文件中的加密内容解析出来。
下面的配置内容是针对使用了Membership, Role, Profile的功能配置的,为了简单没有使用上面的加密配置方法加密连接字符串。
<!--defaultProvider:提供程序的名称。默认为AspNetSqlMembershipProvider.如果有多个Provider的话,指定一个默认值是明智的做法。connectionStringName:Membership数据库的连接名称enablePasswordRetrieval:指定当前成员资格提供程序是否配置为允许用户检索密码enablePasswordReset:指定当前成员资格提供程序是否配置为允许用户重置密码requiresQuestionAndAnswer:指示默认成员资格提供程序是否要求用户在进行密码重置和检索时回答密码提示问题applicationName:应用程序名称requiresUniqueEmail:指示成员资格程序是否配置为要求每个用户具有唯一的电子邮件地址passwordFormat:指示成员资格数据存储密码的格式。值可选Clear,Encrypted,Hashed.maxInvalidPasswordAttempts:锁定成员资格用户前允许的无效密码或无效密码提示问题答案尝试次数minRequiredPasswordLength:密码所要求的最小长度minRequiredNonalphanumericCharacters:有效密码中必须包含的最少特殊字符数passwordAttemptWindow:在锁定成员资格用户之前允许的最大无效密码或无效密码提示问题答案尝试次数的分钟数。这是为了防止不明来源反复尝试猜测成员资格用户的密码或密码提示问题答案的额外措施。passwordStrengthRegularExpression:计算密码的正则表达式--><membership defaultProvider="CustomSqlMembershipProvider"><providers><add name="CustomSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"connectionStringName="connstr"enablePasswordRetrieval="false" enablePasswordReset="true"requiresQuestionAndAnswer="false" applicationName="ScottsProject"requiresUniqueEmail="true" passwordFormat="Hashed"maxInvalidPasswordAttempts="5" minRequiredPasswordLength="3"minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"passwordStrengthRegularExpression=""/></providers></membership><profile defaultProvider="CustomSqlProfileProvider"><providers><add name="CustomSqlProfileProvider"connectionStringName="connstr" applicationName="/"type="System.Web.Profile.SqlProfileProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/></providers></profile><roleManager enabled="true" defaultProvider="CustomSqlRoleProvider"><providers><add connectionStringName="connstr" applicationName="/" name="CustomSqlRoleProvider"type="System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /><add applicationName="/" name="CustomWindowsTokenRoleProvider"type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /></providers></roleManager><authentication mode="Forms"><forms defaultUrl="Default.aspx"loginUrl="Login.aspx"protection="All"timeout="30"path="/"requireSSL="false"slidingExpiration="false"cookieless="UseDeviceProfile"domain=""/></authentication><authorization><deny users="?"/></authorization>
通过这样的配置就可以应用内置功能。可能有些刚接触这些配置的人对上述配置不太了解,下面我们来讲述一下authentication(认证)及authorization(授权)这两个配置节的属性描述让大家了解每个配置属性的意义及作用。
下面给一个authentication(认证)完全的配置
<authentication mode="Forms"><forms defaultUrl="Default.aspx"loginUrl="Login.aspx"protection="All"timeout="30"path="/"requireSSL="false"slidingExpiration="false"cookieless="UseDeviceProfile"domain=""><credentials passwordFormat="Clear" ><user name="Micahael" password="123"/><user name="Jack" password="456"/></credentials></forms><passport redirectUrl="http://www.baidu.com"/></authentication>
属性 | 选项 | 说明 |
mode | 控制应用程序的默认身份验证模式。 | |
Windows | 将 Windows 验证指定为默认的身份验证模式。当使用以下任意形式的 Microsoft Internet 信息服务 (IIS) 身份验证时使用该模式:基本、简要、集成的 Windows 验证 (NTLM/Kerberos) 或证书。 | |
Forms | 将 ASP.NET 基于窗体的身份验证指定为默认的身份验证模式。 | |
Passport | 将 Microsoft Passport 身份验证指定为默认的身份验证模式。 | |
None | 不指定任何身份验证。只有匿名用户是预期的或者应用程序可以处理事件以提供其自身的身份验证。 |
属性 | 选项 | 说明 |
name | 指定要用于身份验证的 HTTP Cookie。默认情况下,name 的值是 .ASPXAUTH。如果在单个服务器上正运行多个应用程序并且每一应用程序均要求唯一的 Cookie,则您必须在每一应用程序的 Web.config 文件中配置 Cookie 名称。 | |
loginUrl | 指定如果没有找到任何有效的身份验证 Cookie,为登录将请求重定向到的 URL。默认值为 default.aspx。 | |
protection | 指定 Cookie 使用的加密类型(如果有)。 | |
All | 指定应用程序同时使用数据验证和加密来保护 Cookie。该选项使用已配置的数据验证算法(基于 <machineKey> 元素)。如果三重 DES (3DES) 可用并且密钥足够长(48 位或更多),则使用三重 DES 进行加密。All 是默认(和建议)值。 | |
None | 指定对于将 Cookie 仅用于个性化并且具有较低的安全要求的站点而言,同时禁用加密和验证。不推荐以此方式使用 Cookie;但是,这是使用 .NET Framework 启用个性化的占用资源最少的方式。 | |
Encryption | 指定使用三重 DES 或 DES 对 Cookie 进行加密,但不对该 Cookie 执行数据验证。以此方式使用的 Cookie 可能会受到精选的纯文本的攻击。 | |
Validation | 指定验证方案验证已加密的 Cookie 的内容在转换中是否未被改变。Cookie 是使用 Cookie 验证创建的,方式是:将验证密钥和 Cookie 数据相连接,然后计算消息身份验证代码 (MAC),最后将 MAC 追加到输出 Cookie。 | |
timeout | 指定以整数分钟为单位的时间量,超过此时间量,Cookie 将过期。默认值是 30。如果 SlidingExpiration 属性为true,则 timeout 属性是一个弹性值,以收到最后一个请求后指定的分钟数为到期时间。为避免危及性能,以及为避免向启用 Cookie 警告的用户显示多个浏览器警告,在经过了超过一半的指定时间后更新该 Cookie。这可能导致精确性上的损失。持久性 Cookie 不超时。 | |
path | 为由应用程序发出的 Cookie 指定路径。默认值是正斜杠 (/),这是因为大多数浏览器是区分大小写的,并且如果路径大小写不匹配,将不发送回 Cookie。 | |
requireSSL | 指定是否需要安全连接来转换身份验证 Cookie。 | |
true | 指定必须使用安全连接来保护用户凭据。如果是 true, ASP.NET 为身份验证 Cookie 设置 HttpCookie.Secure,兼容的浏览器不返回 Cookie,并且除非连接使用的是安全套接字层 (SSL)。 | |
false | 指定在传输 Cookie 时,安全连接不是必需的。默认值为 false。 | |
slidingExpiration | 指定是否启用弹性过期时间。在单个会话期间,弹性过期时间针对每个请求重置当前身份验证 Cookie 的过期时间。 | |
true | 指定启用弹性过期时间。在单个会话期间,身份验证 Cookie 被刷新,并且每个后续请求的到期时间被重置。ASP.NET 版本 1.0 的默认值为 true。 | |
false | 指定不启用弹性过期时间,并指定 Cookie 在最初发出之后,经过一段设定的时间间隔后失效。默认值为 false。 |
Authorization配置节
authorization用于设置应用程序的授权策略,容许或拒绝不同用户或角色访问,该配置可以在计算机,站点,应用程序,子目录或页等级别上声明必须与authentication配置节结合使用,“?”表示匿名(未经身份验证的用户)、“*”表示任何人,基本语法格式如下:
<pre name="code" class="html"> <authorization><deny users="?"/><allow users="Michael,Jack" roles="admin,user"/><!--用逗号分隔的用户列表及角色列表--><allow roles=""/></authorization>
在我的工程目录有这样一个目录,里面的文件只允许管理员成员访问,其它成员不能访问。
在此目录下创建配置文件,文件的内容如下:
<?xml version="1.0"?>
<configuration><system.web><!-- The authorization here allows only those users in the Administrator role to access the ASP.NET resourcesin this folder... --><authorization><allow roles="Admin" /><deny users="*" /></authorization></system.web>
</configuration>
Membership 网站安全相关配置节相关推荐
- 加密(Asp.Net配置文件的)配置节
序言 开发者经常需要在配置文件中存储一些配置信息.比如,数据库联接字符串,用户名和密码等.(这就提出)一个要求,使用ASP.NET 1.x的时候,.net framework应该提供一些方法密或解密这 ...
- 不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况...
不能在此路径中使用此配置节.如果在父级别上锁定了该节,便会出现这种情况.锁定 在全新安装的IIS7下搭建网站,访问页面时出现错误信息如下: 配置错误 不能在此路径中使用此配置节.如果在父级别上锁定了该 ...
- 不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况
不能在此路径中使用此配置节.如果在父级别上锁定了该节,便会出现这种情况.锁定 在全新安装的IIS7下搭建网站,访问页面时出现错误信息如下: 配置错误 不能在此路径中使用此配置节.如果在父级别上锁定 ...
- 动易sitefactory 数据库 mysql msssql_动易SiteFactory配置文件(web.config)常用配置节解读...
配置声明节 复制代码代码如下: 这个节定义了,web.config文件中将要用到具体配置节点的名称,处理程序等. 从这里可以看出,siteFactory里采用.net 企业应用程序块(enterpri ...
- Web.config中创建自定义配置节
Web.config文件可谓是每个ASP.NET站点必不可少的一个文件,其中记录了网站的各种配置.一些比较静态但是又可能变更的数据可以放在web.config中,已有的appSettings配置节便有 ...
- asp.net web.config配置节说明
web.config 文件查找规则: (1)如果在当前页面所在目录下存在web.config文件,查看是否存在所要查找的结点名称,如果存在返回结果并停止查找. (2)如果当前页面 ...
- PetShop 4.0知识点:加密和解密Web.config文件的配置节
PetShop 4.0 中Web.config文件中的连接字符串是加密的,需要进行解密才能看到. 这个问题PetShop 4.0的ReadMe文件中有说明: Encrypting and Decryp ...
- 分析器错误信息:nbsp;无法识别的配置节…
运行.net网站时提示:分析器错误信息: 无法识别的配置节"connectionStrings" 错误提示 源错误: 行 12: <add key="Chapt ...
- ASP.NET 配置节架构
ASP.NET 配置节架构包含控制 ASP.NET Web 应用程序行为的元素.如果为属性指定了默认值,则该默认值是在 Machine.config 文件中设置的,该文件的路径是 systemroot ...
最新文章
- BOOST_VMD_GET_TYPE宏相关的测试程序
- 前端学习(2971):前一天回顾
- nosql----redis持久化详解
- 【翻译】ASP.NET 4中的可扩展输出缓存
- 做实体行业现在难吗?
- ASP.NET MVC IOC之Unity攻略
- 美图秀秀计算机教程,美图秀秀批处理软件详细图文版使用教程,一起学习吧
- 机器人控制算法----模糊控制
- NVIDIA显卡驱动丢失 安装失败
- Git _ 报错信息
- python对excel进行读写操作
- 电脑开机自动联服务器,如何让Mac开机自动连接到NAS或网上邻居上的电脑
- pandas安装完成后,报错:ImportError
- 高斯模糊磨皮——ps
- 工作站属于通用计算机吗,我们常说的工作站到底和普通电脑有什么不一样?工作站好在哪?...
- Python入门到精通(4):关系与逻辑表达式
- 奥巴马2017 年告别演讲
- 使用axios方式实现Ajax请求
- JVM堆大小与机器内存大小的一点探究
- 达人评测 雷神911mr怎么样