本文介绍了Web应用防火墙(Web Application Firewall,简称WAF)日志中包含的专有字段的说明。
字段检索表
下表描述了WAF日志支持的专有字段。您可以通过字段名称检索您需要了解的字段。
必选字段
必选字段表示WAF日志中一定包含的字段。
名称 | 说明 | 取值示例 |
bypass_matched_ids | 客户端请求命中的WAF放行类规则的ID,具体包括白名单规则、设置了放行动作的自定义防护策略规则。 如果请求同时命中了多条放行类规则,该字段会记录所有命中的规则ID。多个规则ID间使用半角逗号(,)分隔。 | 283531 |
content_type | 被请求的内容类型。 | application/x-www-form-urlencoded |
final_action | WAF对客户端请求最终执行的防护动作。取值:
关于WAF防护动作的具体含义,请参见WAF防护动作(*_action)含义说明。 如果一个请求未触发任何防护模块(包括命中了放行类规则、客户端完成滑块或JS验证后触发放行的情况),则不会记录该字段。 如果一个请求同时触发了多个防护模块,则仅记录最终执行的防护动作。防护动作的优先级由高到低依次为:拦截(block) > 严格滑块验证(captcha_strict) > 普通滑块验证(captcha) > JS验证(js)。 | block |
final_plugin | WAF对客户端请求最终执行的防护动作(final_action)对应的防护模块。取值:
如果一个请求未触发任何防护模块(包括命中了放行类规则、客户端完成滑块或JS验证后触发放行的情况),则不会记录该字段。 如果一个请求同时触发了多个防护模块,则仅记录最终执行的防护动作(final_action)对应的防护模块。 | waf |
final_rule_id | WAF对客户端请求最终应用的防护规则的ID,即final_action对应的防护规则的ID。 | 115341 |
final_rule_type | WAF对客户端请求最终应用的防护规则(final_rule_id)的子类型。 例如,在 | xss/webShell |
host | 客户端请求头部的Host字段,表示被访问的域名(基于您的业务设置,也可能是IP地址)。 | api.example.com |
http_cookie | 客户端请求头部的Cookie字段,表示访问来源客户端的Cookie信息。 | k1=v1;k2=v2 |
http_referer | 客户端请求头部的Referer字段,表示请求的来源URL信息。 如果请求无来源URL信息,则该字段显示 | http://example.com |
http_user_agent | 客户端请求头部的User-Agent字段,包含请求来源的客户端浏览器标识、操作系统标识等信息。 | Dalvik/2.1.0 (Linux; U; Android 10; Android SDK built for x86 Build/QSR1.200715.002) |
http_x_forwarded_for | 客户端请求头部的X-Forwarded-For(XFF)字段,用于识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址。 | 47.100.XX.XX |
https | 是否是HTTPS请求。
| on |
matched_host | 客户端请求匹配到的WAF防护对象(云产品实例、域名)。 说明 由于WAF防护对象支持配置泛域名,所以客户端请求可能匹配到某个泛域名对象。例如,假设已接入WAF防护的域名对象是*.aliyundoc.com,当被请求的URL是www.aliyundoc.com时,可能匹配到*.aliyundoc.com。 | *.aliyundoc.com |
querystring | 客户端请求中的查询字符串,具体指被请求URL中问号(?)后面的部分。 | title=tm_content%3Darticle&pid=123 |
real_client_ip | WAF对客户端请求进行分析后,判定发起该请求的真实客户端IP,便于您在业务中直接使用。 WAF无法判定真实客户端IP时(例如,由于用户通过代理服务器访问、请求头中IP字段有误等),该字段显示 | 192.0.XX.XX |
region | WAF实例的地域ID。取值:
| cn |
remote_addr | 与WAF建立连接的IP。 如果WAF与客户端直接连接,该字段等同于客户端IP;如果WAF前面还有其他七层代理(例如CDN),该字段表示WAF的上一级代理的IP。 | 198.51.XX.XX |
remote_port | 与WAF建立连接的端口。 如果WAF与客户端直接连接,该字段等同于客户端端口;如果WAF前面还有其他七层代理(例如CDN),该字段表示WAF的上一级代理的端口。 | 80 |
request_length | 客户端请求的字节数,包含请求行、请求头和请求体。单位:Byte。 | 111111 |
request_method | 客户端请求的请求方法。 | GET |
request_path | 被请求的相对路径,具体指被请求URL中域名后面且问号(?)前面的部分(不包含查询字符串)。 | /news/search.php |
request_time_msec | WAF处理客户端请求所用的时间。单位:毫秒。 | 44 |
request_traceid | WAF为客户端请求生成的唯一标识。 | 7837b11715410386943437009ea1f0 |
server_protocol | 源站服务器响应WAF回源请求的协议及版本号。 重要 云产品(FC)接入WAF的防护对象,暂不支持该字段。 | HTTP/1.1 |
ssl_cipher | 客户端请求使用的加密套件。 | ECDHE-RSA-AES128-GCM-SHA256 |
ssl_protocol | 客户端请求使用的SSL/TLS协议和版本。 | TLSv1.2 |
status | WAF响应客户端请求的HTTP状态码。例如,200(表示请求成功)。 | 200 |
time | 客户端请求的发起时间。按照ISO 8601标准表示,并需要使用UTC时间,格式为 | 2018-05-02T16:03:59+08:00 |
upstream_addr | 源站服务器的IP地址和端口。格式为 重要 云产品(FC)接入WAF的防护对象,暂不支持该字段。 | 198.51.XX.XX:443 |
upstream_response_time | 源站服务器响应WAF回源请求的处理时间。单位:秒。 | 0.044 |
upstream_status | 源站服务器响应WAF回源请求的HTTP状态码。例如,200(表示请求成功)。 | 200 |
user_id | 当前WAF实例所属的阿里云账号ID。 | 17045741******** |
可选字段
可选字段表示您可手动设置,是否要在WAF日志中包含的字段。WAF日志中只记录您已启用的可选字段。
启用可选字段将使WAF日志占用更多的存储容量。如果您的日志存储容量充足,建议您启用更多的可选字段,便于进行更全面的日志分析。关于配置可选字段的具体操作,请参见日志字段说明。
名称 | 说明 | 取值示例 |
acl_action | 客户端请求命中的IP黑名单、自定义规则(访问控制)规则对应的防护动作。取值:
关于WAF防护动作的具体含义,请参见WAF防护动作(*_action)含义说明。 | block |
acl_rule_id | 客户端请求命中的IP黑名单、自定义规则(访问控制)规则的ID。 | 151235 |
acl_rule_type | 客户端请求命中的IP黑名单、自定义规则(访问控制)规则的类型。取值:
| custom |
acl_test | 客户端请求命中的IP黑名单、自定义规则(访问控制)规则对应的防护模式。取值:
| false |
antiscan_action | 客户端请求命中的扫描防护规则对应的防护动作。取值只有block,表示拦截。 关于WAF防护动作的具体含义,请参见WAF防护动作(*_action)含义说明。 | block |
antiscan_rule_id | 客户端请求命中的扫描防护规则的ID。 | 151235 |
antiscan_rule_type | 客户端请求命中的扫描防护规则的类型。取值:
| highfreq |
antiscan_test | 客户端请求命中的扫描防护规则对应的防护模式。取值:
| false |
body_bytes_sent | 服务端返回给客户端的响应体的字节数(不含响应头)。单位:Byte。 重要 云产品(FC)接入WAF的防护对象,暂不支持该字段。 | 1111 |
cc_action | 客户端请求命中的自定义规则(频率控制)规则对应的防护动作。取值:
关于WAF防护动作的具体含义,请参见WAF防护动作(*_action)含义说明。 | block |
cc_rule_id | 客户端请求命中的自定义规则(频率控制)规则的ID。 | 151234 |
cc_rule_type | 客户端请求命中的规则的类型。取值固定为custom,表示自定义规则(频率控制)规则。 | custom |
cc_test | 客户端请求命中的自定义规则(频率控制)规则对应的防护模式。取值:
| false |
request_body | 访问请求体,最大支持存储8 KB。 | test123curl -ki https://automated-acltest02.***.top/ --resolve automated-acltest02.***.top:443:39.107.XX.XX |
request_header | 自定义请求头部,选中该字段后,需填写请求头名称。最多支持添加5个自定义请求头。多个请求头名称以英文逗号(,)隔开。 重要 云产品(ALB、MSE或FC)接入WAF的防护对象,暂不支持该字段。 | {"ttt":"abcd"} |
server_port | 被请求的目的端口。 重要 云产品(FC)接入WAF的防护对象,暂不支持该字段。 | 443 |
waf_action | 客户端请求命中的基础防护规则对应的防护动作。取值仅有block,表示拦截。 关于WAF防护动作的具体含义,请参见WAF防护动作(*_action)含义说明。 | block |
waf_rule_id | 客户端请求命中的基础防护规则的ID。 说明 该规则ID对应您在安全报表页面的基础防护规则页签下,通过规则命中记录列表,查看到的规则ID。更多信息,请参见基础防护规则。 | 113406 |
waf_rule_type | 客户端请求命中的基础防护规则的类型。取值:
| xss |
waf_test | 客户端请求命中的基础防护规则对应的防护模式。取值:
| false |
major_protection_action | 客户端请求命中的重保场景防护模板对应的防护动作。关于WAF防护动作的具体说明,请参见WAF防护动作(*_action)含义说明。 | block |
major_protection_rule_id | 客户端请求命中的重保场景防护模板对应的规则ID。 | 2221 |
major_protection_rule_type | 客户端请求命中的重保场景防护模板对应的规则类型。取值:
| waf_blocks |
major_protection_test | 客户端请求命中的重保场景防护对应的防护模式。取值:
| true |
response_set_cookie | 客户端响应下发的Cookie。 重要 云产品(ALB、MSE或FC)接入WAF的防护对象,暂不支持该字段。 | acw_tc=781bad3616674790875002820e2cebbc55b6e0dfd9579302762b1dece40e0a;path=\/;HttpOnly;Max-Age=1800 |
response_header | 客户端的全部响应头部。 重要 云产品(ALB、MSE或FC)接入WAF的防护对象,暂不支持该字段。 | {"transfer-encoding":"chunked","set-cookie":"acw_tc=***;path=\/;HttpOnly;Max-Age=1800","content-type":"text\/html;charset=utf-8","x-powered-by":"PHP\/7.2.24","server":"nginx\/1.18.0","connection":"close"} |
response_info | 客户端的响应体,最大支持存储16KB。当content-encoding头部为gzip时,响应体记录为base64编码。 重要 云产品(ALB、MSE或FC)接入WAF的防护对象,暂不支持该字段。 | $_POST接收:<br/>Array ( [***] => ) <hr/> $GLOBALS['HTTP_RAW_POST_DATA']接收:<br/> <hr/> php://input接收:*** |
dlp_action | 客户端请求命中的信息泄露防护规则对应的防护动作。取值:
关于WAF防护动作的具体含义,请参见WAF防护动作(*_action)含义说明。 | block |
dlp_rule_id | 客户端请求命中的信息泄露防护规则的ID。 | 20031483 |
dlp_test | 客户端请求命中的信息泄露防护规则对应的防护模式。取值:
| true |
scene_action | 客户端请求命中的Bot管理场景化配置规则对应的防护动作。取值:
关于WAF防护动作的具体含义,请参见WAF防护动作(*_action)含义说明。 | js |
scene_id | 客户端请求命中的Bot管理场景化配置规则对应的场景ID。 | a82d992b_bc8c_47f0_87ce_****** |
scene_rule_id | 客户端请求命中的Bot管理场景化配置规则的ID。 | js-a82d992b_bc8c_47f0_87ce_****** |
scene_rule_type | 客户端请求命中的Bot管理场景化配置规则的类型。取值:
| bot_aialgo |
scene_test | 客户端请求命中的Bot管理场景化配置规则对应的防护模式。取值:
| true |
waf_hit | 命中基础防护攻击内容 | {"postarg_values":{"hit":["${jndi:ldap://"],"raw":"postarg.log4j=${jndi:ldap://"}} |
compliance_hit | 命中协议违背攻击内容 | **********7df271da040a |
sema_hit | 命中语义分析攻击内容 | {"queryarg_values":{"hit":["\" from mysql.user"],"raw":"queryarg.y=\" from mysql.user"}} |
WAF防护动作(*_action)含义说明
*_action表示不同防护规则的防护动作,例如,final_action表示WAF最终执行的防护动作、waf_action表示基础防护规则对应的防护动作。不同防护规则支持的具体防护动作不同,以对应参数描述内容为准。
下表介绍了WAF支持的所有防护动作的含义。
防护动作 | 含义 |
block | 表示拦截,即WAF拦截客户端请求并向客户端返回405页面。 |
captcha_strict | 表示严格滑块验证,即WAF向客户端返回滑动验证页面。如果客户端成功执行滑动验证,则WAF放行本次请求,否则拦截请求。严格滑块验证模式下,客户端的每次请求都需要验证。 |
captcha | 表示普通滑块验证,即WAF向客户端返回滑动验证页面。如果客户端成功执行滑动验证,则WAF在一段时间(默认30分钟)内放行该客户端的所有请求(不需要重复验证),否则拦截请求。 |
js | 表示JavaScript验证,即WAF向客户端返回一段正常浏览器可以自动执行的JavaScript代码。如果客户端正常执行了JavaScript代码,则WAF在一段时间(默认30分钟)内放行该客户端的所有请求(不需要重复验证),否则拦截请求。 |
pass、bypass | 表示放行,即WAF将客户端请求转发到源站服务器进行处理。 |
js_pass | 表示客户端通过了JavaScript验证,WAF放行客户端请求。 |
sigchl | 表示动态令牌验证,即Web端请求加签。客户端发送请求时经过了WAF下发的webSDK针对请求进行加签保护,并将签名随请求上报。如果加签验签正常,则该请求直接回源,否则会返回一段动态令牌执行代码要求客户端重新加签请求。 |
monitor | 表示观察,表示WAF不拦截命中规则的请求,只通过日志记录请求命中了规则。 |