目录
URL Rewrite简述
具体步骤
模块安装
入站规则制定
设置白名单
根据Referer设置合法请求
根据Referer拦截非法请求
总结
快速导入规则
通过URL Rewrite设置Referer进行防止跨站请求伪造漏洞
URL Rewrite是微软针对IIS推出的一种对URL进行重写的扩展模块,目前支持用于IIS7及以上版本。该模块使IIS管理员能够创建强大的自定义规则,语法支持正则规则以及通配符规则过滤。它能够根据HTTP头和IIS服务器变量重写URL,可以避免一些参数名、ID等信息完全暴露在用户面前,从而提高安全性;同时可以根据URL段或请求元数据控制对网站内容的访问。本质上URL Rewrite是一个加强版的过滤器,据此我们可以根据HTTP请求的header信息进行防盗链应用。
目前最新版本为URL Rewrite2.0;可以从微软网站下载:
https://www.iis.net/downloads/microsoft/url-rewrite
【安装要求】:
使用名为“Administrator”的实际帐户登录到服务器,以管理员身份运行。
安装后,IIS栏增加一个URL重写功能:
模块目前过滤http请求信息支持以下几个方面:
1.请求地址URL
2.用户代理HTTP_USER_AGENT
3.IP地址REMOTE_ADDR
4.查询字符串QUERY_STRING
5.引用站点HTTP_REFERER
6.主机地址HTTP_HOST
右侧添加规则,请求查看入站规则一栏有三个模板信息:空白规则、请求阻止和重写映射规则。选择一个空白规则即可,一个规则通常包含匹配URL,条件,服务器变量、操作四大部分。
1. 匹配URL: 是指请求的URL满足设定的条件才会继续走下边的过滤条件,相当于一个粗尺度的过滤;URL过滤支持正则表达式、通配符语法以及完全匹配三种模式。
2. 条件:当请求信息满足匹配URL信息时,会进入到条件进行判断;这里的条件判断支持全部匹配和任意匹配两种模式;全部相当于逻辑与;任意相当于逻辑或。
3. 操作:当满足设定的条件后,针对该请求进行的操作,目前支持重写、无操作、重定向、自定义响应、中止请求几种,可以通过无操作设置白名单,通过自定义响应进行请求拦截。
【备注】:在操作一栏下有停止后续处理规则复选,如果选中,表示为当前请求信息满足步骤2的条件时,会终止后续规则的处理;如果没有匹配到当前url或者匹配到url但是条件并不满足时还会继续走后续规则的处理。
GS产品的一些入口信息并不需要进行过滤,此时我们需要设置白名单,即符合白名单规则的请求信息不予拦截,白名单信息可以通过设置操作为无操作进行处理,然后停止后续处理务必选中。
步骤:
1. 添加规则,选择空白规则,设定规则名称,然后依次设置匹配URL,条件以及操作三项。
2.设定规则的匹配URL,选择与模式匹配,语法使用正则表达式,模式选为.*,即所有的url都进行条件过滤。
3. 设定规则的条件,第二部已经设置了匹配URL,当URL满足匹配模式时, 设定需要设置白名单的相关信息,一般是一个入口地址,不含有相应的referer信息,
选择全部匹配,根据HTTP_REFERER条件过滤,选择与模式匹配,条件设置为^\s*$:
4.对应的操作选为无,即走正常的流程,停止后续处理务必选中,否则后边针对referer的过滤条件可能把白名单信息拦截掉,务必选择停止后续处理
第三节设置了系统正常访问的白名单信息;还有一种就是带referer信息的正常的web访问,这种访问也属于合法的信息,因此需要再增加一种白名单规则。
步骤:
1. 新建一个规则,选择空白规则。
2. 匹配URL选为与模式匹配,使用正则表达式,模式为.*。
3. 设定过滤条件,选择为任意匹配,添加新项根据HTTP_REFERER过滤,分别增加以下几个模式,均选为与模式匹配。
http://localhost/cwbase.*
http://127.0.0.1/cwbase.*
http://服务器IP/cwbase.*
4. 设定操作结果为无,同样务必选择停止后续处理规则。
根据http请求的Referer信息可以过滤该请求是否为合法的信息,从而进行盗链拦截。
设置方法和白名单类似,主要在条件的筛选以及动作的执行不同。
步骤:
1. 新建一个规则,选择空白规则。
2. 设定规则的URL匹配信息,同样选为正则语法,与模式匹配形式,模式为.*
3. 设定条件,这里条件可以忽略,因为上述方案分别设定了针对web以及WinForm的白名单请求;web访问带有合法referer信息的请求;走到该分支的是不满足以上条件的访问请求,直接返回401错误即可,也可以进行定制。
4. 操作一栏选择自定义响应,状态码401即可
3,4,5小节分别设置了入口白名单、正常访问白名单以及拦截非法请求三种情况,请务必按照这三个顺序依次设置,如下图结构:
第3,4,5小节通过界面自行添加了规则,项目可以使用以下模板直接快速导入规则,无需手动添加。
1. 服务端bscw_local下级下web.config文件
2. 找到节点,在该节点内添加如下配置节即可导入规则,注意替换IP地址。
附规则配置节:(务必修改模板的IP地址为实际服务器IP地址)