Web.config 安全相关配置
web.config 位于根目录
1、authentication节点
|
<system.web> |
基于窗体(Forms)的身份验证配置站点,当没有登陆的用户访问需要身份验证的网页,网页自动跳转到登陆网页。其中元素loginUrl表示登陆网页的名称,name表示Cookie名称
2、authorization 节点
|
<!--配置 Web 应用程序的授权,以控制客户端对 URL 资源的访问。--> |
allow 向授权规则映射添加一个规则,该规则允许对资源进行访问。
deny 向授权规则映射添加一条拒绝对资源的访问的授权规则。
users="*" 是指任何用户 users="?" 是指经身份验证的用户
注意: 运行时,授权模块从最本地的配置文件开始,循环访问 allow 和 deny 元素,直到它找到适合特定用户帐户的第一个访问规则。然后,该授权模块根据找到的第一个访问规则是 allow 还是 deny 规则来允许或拒绝对 URL 资源的访问。默认的授权规则为 <allow users="*"/>。因此,默认情况下允许访问,除非另外配置。
如果在根目录下的web.config配置太繁琐,可以配置到相应目录下,例如User目录下的web.config文件
3、customErrors 节点
|
<customErrors mode="Off">
</customErrors> <customErrors defaultRedirect="url" mode="On|Off|RemoteOnly"> <error. . ./> </customErrors> |
|
<customErrors mode="RemoteOnly" defaultRedirect="~/Prompt/GenericError.htm"> |
这里可以让用户自定义出错页。
4、pages 节点
|
<!--全局定义页特定配置设置,如配置文件范围内的页和控件的 ASP.NET 指令。--> |
该值确定 ASP.NET 是否针对危险值检查来自浏览器的输入。如果 ASP.NET 针对危险值检查来自浏览器的输入,则为 true;否则为 false。默认值为 true。
这个功能是为了防止跨站脚本等危险代码。使全局默认为true。只有小数页面,如搜索页面
Search.aspx 设为 : ValidateRequest="false" 。为了可以搜索类似<div> 等内容,如果只是文字性的输入,可修改页 search.aspx 的设置,以增强系统安全性。
Security.config 配置说明
文件位于config目录
1、后台页面访问配置
noCheckAdminLogOn
后台不检查权限的页面
|
<noCheckAdminLogOn mode="OnlyList"> |
2、检查外站链接的后台页面配置
noCheckUrlReferrer
后台不检查来源页的列表,即管理员用户可以直接访问的文件列表。后台设置是默认不允许直接访问,这样可以保护后页页面不被非法方式访问和外站链接访问,有效防止跨站请求伪造。
|
<noCheckUrlReferrer mode="OnlyList"> |
如果文件不在列表中,直接在URL 里访问,将出现错误提示:
产生错误的可能原因:
对不起,为了系统安全,不允许直接输入地址访问本系统的后台管理页面。
如需要,用户可以加上自定义的内容。
3、防止跨站请求伪造追加安全码的页面配置
checkSecurityCode
页面提交时检查安全码。
防止不正常操作(恶意操作)造成系统重大损失。也是对一些重要操作的保护,防止跨站请求伪造。
如:
|
<page url="~/Admin/Contents/ModelManage.aspx?Action=Delete" /> |
4、页面操作权限码的配置
checkPermissions
页面操作权限码的配置,检查后台管理员是否有相关操作码的权限。
|
<page url="contents/addcontenttonode.aspx" operateCode="CategoryInfoManage" checkType="or"/> |
operateCode 为操作码 根据操作码判断是否存在此操作的权限。
checkType 权限判断类型, or and
or 操作码中的权限进行或运算,即有其中任何一种权限,就返回true
这个默认值是or 而且对于单一权限码的,可以不用配置
and 操作码中的权限进行与运算,即要求有全部权限才返回true 否则返回false.
AjaxLabel.config 配置说明
是对AJAX.aspx 的文件访问权限控制配置文件。
由于前台AJAX标签过于强大,会致使 AJAX标签 会出现一些危险性,对此我们做了一个XML安全文件来配置那些AJAX标签可以直接引用。这个AjaxLabel.config 文件是在 网站根目录的Config 目录下。如果标签没有记录,就会出现 本标签禁止访问!
例如:
|
<label name="内容评论PK标签"> |
是指标签名 为 “内容评论PK标签” 的标签可以被ajas.aspx调用,而且参数param只能为 "generalid",类型为Int,这样能有效防止恶意攻击。
如果用户需自定义标签,而且需要ajax.aspx 文件调用,那就在AjaxLabel.config 中配置
app_offlineX.htm 文件作用
如果你要COPY站点,进行站点维护,部署,和进行大量修改,有可能要停掉你的WEB应用程序了,而以一个友好的方式提示给用户,比如什么“本网站正在更新”等等的信息,你可以把文件app_offlineX.htm 改名为app_offline.htm(大小写没关系)的静态HTM页面文件,其中修改成你要临时显示的内容,将其放在你的应用的根目录下。这样,任何外部的请求的话,都会马上被转移到该页面了。
网站维护完成后记得将文件名app_offline.htm改回。
AllowString.xml 文件配置
文件位于Common目录下
文件的作用是:会员发表信息时启用防XSS(跨站攻击)设置时,让用户设置允许会员提交部份特殊js 代码。
XSS是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。
例如:
|
<AllowString><![CDATA[onmousewheel="return bbimg(this)"]]></AllowString> |
QueryStrings.config配置
http://bbs.powereasy.net/dispbbs.asp?BoardID=73&ID=377573
相关贴:http://bbs.powereasy.net/dispbbs.asp?BoardID=73&replyID=162628&id=382771&skin=0