# 使用Postman工具模拟业务验证全局白名单规则
#### 应用场景
当防护网站成功接入WAF后，您可以使用接口测试工具模拟用户发起各类HTTP(S)请求，以验证配置的WAF防护规则是否生效，即验证配置防护规则的防护效果。本实践以Postman工具为例，说明如何验证全局白名单规则。
#### 应用示例
例如，您的业务部署在"/product"路径下，由于生态开发，针对参数ID存在用户提交脚本或富文本格式（Rich Text Format，RTF）文件的业务场景，为了确保业务正常运行，您需要对用户提交的内容进行误报屏蔽，以屏蔽误拦截的访问请求，提升WAF防护效果。
#### 资源与成本规划
表1资源和成本规划 
| 资源        | 资源说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | 每月费用                                                                                |
|:---|:---|:---|
| Web应用防火墙 | 云模式-标准版： - 计费模式：包年/包月  - 域名数量：10个防护域名  - QPS配额：2,000QPS业务请求  - 支持带宽峰值： - 源站服务器部署在华为云内：100Mbps  - 源站服务器部署在华为云外：30Mbps     | 具体的计费方式及标准请参考[计费说明](https://support.huaweicloud.com/price-waf/waf_03_0001.html)。 |
   
#### 步骤一：购买云模式标准版
以购买WAF云模式标准版为例进行介绍。
1. [登录Web应用防火墙控制台](https://console.huaweicloud.com/waf/?locale=zh-cn)。
2. 在页面右上角，单击"购买WAF实例"，进入购买页面，"WAF模式"选择"云模式"。 
   - "区域"：根据防护业务的所在区域就近选择购买的WAF区域。
   
   - "版本规格"：选择"标准版"。
   
   - "扩展包"及"购买时长"：根据具体情况进行选择。
   
   
   
   
3. 确认参数配置无误后，在页面右下角单击"立即购买"。
4. 确认订单详情无误后，阅读并勾选《Web应用防火墙免责声明》，单击"去支付"，完成购买操作。
5. 进入"付款"页面，选择付款方式进行付款。 
   订单支付成功后，单击"进入Web应用防火墙控制台"，进入WAF"总览"页面。将鼠标悬停在"版本管理"区域，查看已购实例版本及其详细规格。
   
   
 
#### 步骤二：将网站信息添加到WAF
此处以云模式-CNAME接入为例进行介绍。
- 云模式-ELB接入方式请参见[将网站接入WAF防护（云模式-ELB接入）](https://support.huaweicloud.com/usermanual-waf/waf_01_0287.html)。
- 独享模式接入方式请参见[将网站接入WAF防护（独享模式）](https://support.huaweicloud.com/usermanual-waf/waf_01_0250.html)。
1. 在左侧导航栏，单击"接入管理"。 
   在开始添加防护网站前，可单击页面右上角的"流程引导"，了解接入流程。
   
   
2. 在"接入管理"页面，选择"云模式-CNAME"页签后，单击"添加防护网站"。 
   若仅开通一种接入模式，则直接单击"添加防护网站"。
   
   
3. 根据界面提示，配置网站信息，如[表2]所示。
   
   图1基础信息配置   
   ![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000002046949960.png "点击放大")
    表2重点参数说明 
   | 参数      | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | 取值样例                                                                                                                                                                                                                                                                                                                                |
   |:---|:---|:---|
   | 防护域名 | 需要添加到WAF中防护的域名。 - 域名已完成备案  - 支持单域名（例如，一级域名example.com，二级域名www.example.com等）和泛域名（例如，\*.example.com）。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | www.example.com                                                                                                                                                                                                                                                                                                                     |
   | 防护端口   | 需要防护的域名对应的业务端口。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | 标准端口                                                                                                                                                                                                                                                                                                                                |
   | 服务器配置 | 网站服务器地址的配置。包括对外协议、源站协议、源站地址、源站端口和权重。 - 对外协议：客户端请求访问服务器的协议类型。包括"HTTP"、"HTTPS"两种协议类型。  - 源站协议：Web应用防火墙转发客户端请求的协议类型。包括"HTTP"、"HTTPS"两种协议类型。  - 源站地址：客户端访问的网站服务器的公网IP地址（一般对应该域名在DNS服务商处配置的A记录）或者域名（一般对应该域名在DNS服务商处配置的CNAME）。  - 源站端口：WAF转发客户端请求到服务器的业务端口。  - 权重：负载均衡算法将按权重将请求分配给源站。   | 对外协议：HTTP 源站协议：HTTP 源站地址：IPv4 XXX.XXX.1.1 源站端口：80 |
   | IP标记               | 网站接入WAF后，"已使用七层代理"默认为"是"。该场景下，WAF无法直接获取客户端真实IP，导致基于IP的防护规则失效。选择IP标记后，可指定客户端IP的判定方式，帮助WAF获取客户端真实IP。 - **$remote_sockaddr**：当WAF前无其他代理时，如果报文存在TOA（TCP Option Address），且不希望WAF以TCP Option Address作为客户端IP时，选择该选项。配置后，WAF会以报文的3层源IP作为客户端真实IP。  - **$remote_addr**：当WAF前存在四层代理时，如果希望WAF以TCP连接IP作为客户端真实IP，选择该选项。  - **x-forwarded-for**：当WAF前存在七层代理时，选择该选项后，WAF会以X-Forwarded-For（XFF）中的首个IP地址作为客户端真实IP。  - **自定义** ：当WAF前存在七层代理时，选择该项并配置字段名后，WAF优先从配置的字段中获取客户端真实IP。配置多个字段时，WAF从左到右依次读取客户端真实IP。 如果WAF从自定义字段中未获取到客户端真实IP，将依次从CDN-Src-Ip、X-Real-Ip、X-Forwarded-For、$remote_addr字段获取客户端真实IP。                                                                    | x-forwarded-for                                                                                                                                                                                                                                                                                                                                |
      
   
   
4. 单击"下一步"，完成防护网站基本信息填写。根据"添加防护网站"面板提示，完成如下操作： 
   图2添加域名完成   
   ![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000001920672218.png "点击放大")
   1. [放行回源IP](https://support.huaweicloud.com/usermanual-waf/waf_01_0002.html#section4)
   
   2. [本地验证](https://support.huaweicloud.com/usermanual-waf/waf_01_0002.html#section6)
   
   
   完成上述步骤后，您可以在域名列表，查看已添加的域名"接入状态"。此时，域名"接入状态"为"未接入"，原因为"修改DNS解析"。
   
   
 
#### 步骤三：使用Postman工具模拟业务验证全局白名单规则
1. 确认"Web基础防护"为开启状态，且防护模式为"拦截"。同时，"常规检测"已开启。 
   有关配置Web基础防护的详细操作，请参见[配置Web基础防护规则](https://support.huaweicloud.com/usermanual-waf/waf_01_0008.html)。
   
   
2. 下载并安装Postman。
3. 在Postman上设置请求路径为"/product"，参数ID为普通测试脚本，防护网站的访问请求被拦截。 
   ![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000001184478148.png "点击放大")
   
   
4. 处理误报事件。
   
   1. [登录Web应用防火墙控制台](https://console.huaweicloud.com/waf/?locale=zh-cn)。
   
   2. 在控制台左上角，单击![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000002394179209.png)图标，选择区域或项目。
   
   3. 在左侧导航树中，选择"防护事件"，进入"防护事件"页面。
   
   4. 在防护事件页面，WAF拦截的防护事件命中了"XSS攻击"的"010000"规则。
      图3查看防护事件   
      ![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000001229717841.png "点击放大") 
   
   5. 在该防护事件所在行的"操作"列中，单击"误报处理"。
   
   6. 在弹出的"误报处理"对话框中，添加如[图4]所示全局白名单规则。
      图4添加全局白名单规则   
      ![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000001791007522.png "点击放大") 
   
   7. 单击"确认添加"。 防护规则生效需要5分钟左右。
      
   
   
   
   
5. 在Postman上再次设置请求路径为"/product"，参数ID为普通测试脚本，防护网站的访问请求还是被拦截。 
   ![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000001184796620.png "点击放大")
   
   
6. 参照[4]，查看防护事件，处理命中"XSS攻击"的"110053"规则的误报防护事件。
   
   图5查看防护事件   
   ![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000001229997791.png "点击放大")
   图6添加全局白名单规则   
   ![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000001791007522.png "点击放大")
   
   
7. 在Postman上第三次设置请求路径为"/product"，参数ID为普通测试脚本，防护网站的访问请求仍被拦截。 
   ![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000001184475436.png "点击放大")
   
   
8. 参照[4]，查看防护事件，处理命中"XSS攻击"的"110060"规则的误报防护事件。
   
   图7查看防护事件   
   ![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000001229995165.png "点击放大")
   图8添加全局白名单规则   
   ![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000001791007522.png "点击放大")
   
   
9. 在Postman上第四次设置请求路径为"/product"，参数ID为普通测试脚本。此时，防护网站的访问请求不再被拦截，说明所有全局白名单规则都已生效。 
   ![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000001229995391.png "点击放大")
   同时，查看"防护事件"页面，防护事件列表也没有新增的XSS攻击防护事件。
   
   
10. 在Postman上模拟攻击，验证设置的全局白名单规则不会影响WAF拦截其他参数的XSS攻击事件。 
    1. 在Postman上设置请求路径为"/product"，参数item为普通测试脚本，防护网站的访问请求被拦截。 ![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000001229915013.png "点击放大")
       
    
    2. 查看"防护事件"页面，WAF拦截参数item的XSS攻击事件。
       图9查看防护事件   
       ![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000001184317094.png "点击放大") 
    
    
    
    
11. 在Postman上模拟攻击，验证设置的全局白名单规则不会影响WAF拦截其他路径的XSS攻击事件。 
    1. 在Postman上设置请求路径为"/order"，参数ID为普通测试脚本，防护网站的访问请求被拦截。 ![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000001229835891.png "点击放大")
       
       
    
    2. 查看"防护事件"页面，WAF拦截"URL"为"/order"、参数ID的XSS攻击事件。
       图10查看防护事件   
       ![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000001184480742.png "点击放大") 
    
    
    
    
 
