id: 4d793c0c9bce466693f9ba2d364116b2
parent_id: 
item_type: 1
item_id: 4bb1418e57b04f009ef508cb9556fdf8
item_updated_time: 1764345634443
title_diff: "[{\"diffs\":[[1,\"Cloudflare 从入门到精通5. 使用 WAF 保护你的网站\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":33}]"
body_diff: "[{\"diffs\":[[1,\"<html>\\\r\\\n<head>\\\r\\\n  <title>Cloudflare 从入门到精通5. 使用 WAF 保护你的网站</title>\\\r\\\n  <basefont face=\\\"微软雅黑\\\" size=\\\"2\\\" />\\\r\\\n  <meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html;charset=utf-8\\\" />\\\r\\\n  <meta name=\\\"exporter-version\\\" content=\\\"YXBJ Windows/608924 (zh-CN, DDL); Windows/10.0.0 (Win64); EDAMVersion=V2;\\\"/>\\\r\\\n  <meta name=\\\"content-class\\\" content=\\\"yinxiang.peso.superNote\\\"/>\\\r\\\n  <meta name=\\\"application-data:yinxiang.noteLayout\\\" content=\\\"{\\\"lineSpace\\\":\\\"recommend\\\",\\\"paragraphSpace\\\":\\\"recommend\\\"}\\\"/>\\\r\\\n  <style>\\\r\\\n\\tbody, td {\\\r\\\n\\t  font-family: 微软雅黑;\\\r\\\n\\t  font-size: 12pt;\\\r\\\n\\t}\\\r\\\n  </style>\\\r\\\n</head>\\\r\\\n<body>\\\r\\\n<a name=\\\"43320\\\"></a>\\\r\\\n<h1>Cloudflare 从入门到精通5. 使用 WAF 保护你的网站</h1>\\\r\\\n\\\r\\\n<div><span style=\\\"\\\"><div style=\\\"max-width: 700px;\\\"><p></p><div style=\\\"--en-blockquote: true; box-sizing: border-box; border-left: 3px solid #b4c0cc; background-position: initial initial; background-repeat: initial initial;\\\"><div>原文链接: <a href=\\\"http://mp.weixin.qq.com/s?__biz=Mzk0NTcxMzU3NQ==&amp;mid=2247483766&amp;idx=1&amp;sn=7dd167fe571c5893231ace3b1ef0748b&amp;chksm=c2d9b595f7cec0733afeae7710e7925944571dd0e3b1e36f2ef21a61f08d2959ae5a852189e0&amp;mpshare=1&amp;scene=1&amp;srcid=0526iX5rNkKhqg57nKC16VIN&amp;sharer_shareinfo=9c33623567a076b0b764c960b270c22b&amp;sharer_shareinfo_first=9c33623567a076b0b764c960b270c22b#rd\\\"><span>http://mp.weixin.qq.com/s?__biz=Mzk0NTcxMzU3NQ==&amp;mid=2247483...</span></a></div></div><p></p><div style=\\\"\\\"><div><div><div><span style=\\\"\\\">原创</span><span><span style=\\\"\\\">DeBill</span></span><span><a style=\\\"\\\"> DeBill独立开发 </a></span><span><em></em></span></div><div style=\\\"\\\"><p style=\\\"text-align: center;\\\"><img src=\\\":/26b9f8f05b93436dae028df0c6793188\\\" type=\\\"image/jpeg\\\" data-filename=\\\"640.jpg\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; width: auto;\\\" width=\\\"auto\\\"/></p><h2 style=\\\"font-size: 24px;\\\">📜 前言</h2><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">WAF（<span style=\\\"color: rgb(56, 56, 56);\\\">Web Application Firewall</span>）全称应用防火墙，顾名思义可以帮我们过滤掉恶意的网络流量，只要域名托管在 Cloudflare 上就可以使用 Cloudflare WAF 强大的定制规则来保护我们的应用，无需在网站后端自己部署一个网关来处理各种流量，本文会介绍 Cloudflare WAF 的核心概念和组件，同时教大家配置一些简单的规则防护你的网站。</span></p><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">WAF 是 Cloudflare 的拳头产品，其中的概念和用法非常多，且免费计划和各类付费计划能使用的功能也各不相同，下文会先介绍免费计划里能用到的功能，也会提付费计划里能用到的各种概念和功能，方便大家对 WAF 有个一个整体的认识。为了避免歧义，博主会用英文来直接描述各种概念，避免翻译造成的歧义。</span></p><h2 style=\\\"font-size: 24px;\\\">🆓 免费计划可用功能</h2><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">首先我们找到 WAF 的操作界面：Dashboard --&gt; 域名空间 --&gt; Security --&gt; WAF 。可以到一共由 Custom rules, Rate limiting rules, Managed rules, Tools 四部分组成，下面一一介绍。</span></p><p style=\\\"text-align: center;\\\"><img src=\\\":/c576d36aece24372b73470d274887c72\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; width: auto;\\\" width=\\\"auto\\\"/></p><h3 style=\\\"\\\"><span style=\\\"font-size: 20px;\\\">Custom rules</span></h3><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">免费计划允许用户创建 5 条自定义规则来处理流量。点击 「Create rule」可以进入规则设置界面。规则遵循以下机制：<strong>Field value 达到什么条件，就采取什么 Action。</strong>Cloudflare 提供了操作面板配置你想要的规则，也允许用户直接编写规则表达式来配置规则，一般情况下我们用面板直接配置就行。</span></p><p style=\\\"text-align: center;\\\"><img src=\\\":/92da3b220bb14c85b9be04d0dade5236\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; width: auto;\\\" width=\\\"auto\\\"/></p><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">Field 可以选择的项非常多，例如 URI 路径、AS Num、国家、客户端类型等等选项，基本能满足你 90%的需求。</span></p><p style=\\\"text-align: center;\\\"><img src=\\\":/07929f26d32a4cb1837063f2ccebcd43\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; width: auto;\\\" width=\\\"auto\\\"/></p><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">action 主要有 5 种：</span></p><p style=\\\"text-align: center;\\\"><img src=\\\":/2e2f0cd6eeec48dd80de7cc7b672b430\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; width: auto;\\\" width=\\\"auto\\\"/></p><ul style=\\\"\\\"><li style=\\\"color: rgb(76, 76, 76);\\\"><p style=\\\"\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">Managed Challenge:这个 Cloudflare <span style=\\\"color: rgb(223, 42, 63);\\\">官方推荐</span>的一种的验证方式。我们上网时肯定会遇到类系的验证方式，在九宫格图片中让我们点选满足条件的方块，类似下图：</span></p><p style=\\\"\\\"><br/></p><p style=\\\"text-align: center;\\\"><img src=\\\":/8cbc5d80823e4e1ba12b58c63192a4c9\\\" type=\\\"image/jpeg\\\" data-filename=\\\"640.jpg\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; width: auto; height: 378px;\\\" width=\\\"auto\\\"/></p><p style=\\\"\\\"></p><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">这种验证方式非常麻烦，稍不留神就会点错，交互体验不好。Cloudflare 提供了一种动态校验请求的验证方式，用户不再需要点选 captcha 图，相信大家上网时都看过下面的图。</span></p><p style=\\\"min-height: 24px;\\\"><br/></p></li></ul><p style=\\\"text-align: center;\\\"><img src=\\\":/8689fefd14ac455b9fe16b5842f1587e\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; width: auto; height: 274px;\\\" width=\\\"auto\\\"/></p><ul style=\\\"\\\"><li style=\\\"color: rgb(76, 76, 76);\\\"><p style=\\\"\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">Block: 拒绝请求，不再执行后续的规则。所以你有多条规则要运行的时候，如果有规则采取 block 操作要注意规则放置的位置</span></p></li><li style=\\\"color: rgb(76, 76, 76);\\\"><p style=\\\"\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">JS Challenge: JS Challenge 要求用户在浏览器中运行 Cloudflare 提供的 JavaScript 脚本，以确认其身份，适合需要额外安全性的情况。用户必须等待浏览器处理完 JS 脚本才能进行下一步操作，处理时间一般在 5 秒以内</span></p></li><li style=\\\"color: rgb(76, 76, 76);\\\"><p style=\\\"\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">Skip: 跳过 WAF 一些功能或者特定的防护产品。例如可以让命中规则的请求跳过剩下的规则。</span></p></li></ul><p style=\\\"text-align: center;\\\"><img src=\\\":/045b0ecd33d94ebab60ddc793c0793d7\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; width: auto; height: 416px;\\\" width=\\\"auto\\\"/></p><ul style=\\\"\\\"><li style=\\\"color: rgb(76, 76, 76);\\\"><p style=\\\"\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">Interactive Challenge: 采取交互式的验证方式，这种方式 Cloudflare <span style=\\\"color: rgb(223, 42, 63);\\\">不推荐</span>，推荐使用 Managed Challenge</span></p></li></ul><p style=\\\"\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">后选择该规则放置的位置，位置会影响一些使用了 Block，Skip 的规则。最后点 Deploy 该规则就立马生效了。</span></p><h3 style=\\\"\\\"><span style=\\\"font-size: 20px; color: rgb(0, 0, 0);\\\">Rate limiting rules</span></h3><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">该功能对命中匹配表达的请求进行访问速率限制，免费计划只有 1 条可以使用，且可选项也比较有限，例如 Field 目前只有 Password Leaked、URI Path、Verified Bot、Verified Bot Category 选项。特征也只能选择 ip，速率也只能选择每 10 秒多少个请求，action 只能选择 block。</span></p><p style=\\\"text-align: center;\\\"><img src=\\\":/5cbcaa6d04ac4721b7b244170b772b72\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; width: auto;\\\" width=\\\"auto\\\"/></p><h3 style=\\\"\\\"><span style=\\\"font-size: 20px;\\\">Managed rules</span></h3><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">Managed rules <span style=\\\"color: rgb(37, 37, 37);\\\">允许你部署预配置的规则集，避免常见的网络攻击，</span>点进这个 Tab 发现要升级成 pro 会员才能进一步设置。但是根据官方提示我们知道，即便免费计划的用户也能享用 Free Managed Ruleset 的基础防护，至于这个 Ruleset 是什么，以后的文章会详细介绍，这里不展开说明。</span></p><p style=\\\"text-align: center;\\\"><img src=\\\":/97b08ec8e0654fbb8c438c25b3f309f8\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; width: auto;\\\" width=\\\"auto\\\"/></p><h3 style=\\\"\\\"><span style=\\\"font-size: 20px;\\\">Tools</span></h3><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">如果前面的 Custom rules 和 Rate limiting rule 还不能满足你的需求，Cloudflare 还提供了一些防护工具，免费计划能用的是 Ip Access Rules 和 User Agent Blocking</span></p><h4 style=\\\"\\\"><span style=\\\"\\\">Ip Access Rules</span></h4><p style=\\\"text-align: center;\\\"><img src=\\\":/b7a369c9f83442b5af0bb1966005098c\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; width: auto;\\\" width=\\\"auto\\\"/></p><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">该功能允许你对 IP、IP 范围、国家、ASN 的请求进行特定的操作，相当于 Custom Rules 的一个特例，所以 Cloudflare 也建议你用 Custom Rules 来设置规则，而不是使用该工具。但是对于免费用户来说 5 条自定义规则少得可怜，如果你 Custom Rules 里涉及到对 IP、IP 范围、国家、ASN 的请求进行特定的操作，不妨使用该工具。需要注意以下几点：</span></p><ul style=\\\"\\\"><li style=\\\"color: rgb(76, 76, 76);\\\"><p style=\\\"\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">每个帐号可以设置 50000 条 Ip Access Rules，对于绝大多数人来说完全用不完</span></p></li><li style=\\\"color: rgb(76, 76, 76);\\\"><p style=\\\"\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">免费用户不能用该工具 block 指定国家的请求，只能在 Custom rules 里设置</span></p></li><li style=\\\"color: rgb(76, 76, 76);\\\"><p style=\\\"\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">Ip Access Rules 设置为 Allow 的流量，不会出现在 Security Events 看板里</span></p></li><li style=\\\"color: rgb(76, 76, 76);\\\"><p style=\\\"\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">根据上图右侧流量处理顺序，Ip Access Rules 先于 Custom rules 执行，所以 Custom rules 里无法使用 skip 跳过</span></p></li></ul><h4 style=\\\"\\\"><span style=\\\"\\\">User Agent Blocking</span></h4><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">免费计划可以定义 10 条规则来限制不同客户端的各种行为，同样这个工具相当于 Custom Rules 的一个特例，所以 Cloudflare 也建议你用 Custom Rules 来设置规则，除非你不想占用 5 条宝贵的 Custom Rules</span></p><h3 style=\\\"\\\"><span style=\\\"font-size: 20px;\\\">Security Events</span></h3><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">Security Events 提供一个看板可以查看命中规则的请求一些基本信息，免费计划最多只能查看某一天内的所有命中规则的请求日志。这个功能很有意思，我用它来查看有哪些网站来爬过我的网站，即便我的博客没有多少访问量，Google, Bing, Feedly, Ahrefs 都来爬过我的网站，还有一些我完全不认识的网站也会来爬我的网站，然而我给百度提交那么多次网站，百度的爬虫从来没来过 : )</span></p><p style=\\\"text-align: center;\\\"><img src=\\\":/54fe02214b32465a8c38c8093de908c5\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; width: auto;\\\" width=\\\"auto\\\"/></p><h2 style=\\\"font-size: 24px;\\\">💰 付费计划独有功能</h2><h3 style=\\\"\\\"><span style=\\\"font-size: 20px;\\\">Managed Rules</span></h3><p style=\\\"min-height: 24px; text-align: left;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">付费用户除了可以使用 Free Managed Ruleset 还可以使用 Cloudflare 多年维护更新的规则集，给你的网站再上一层防护。例如：</span></p><ul style=\\\"\\\"><li style=\\\"color: rgb(76, 76, 76);\\\"><p style=\\\"text-align: left;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\"><strong>Cloudflare Managed Ruleset</strong>: Cloudflare 安全团队维护的规则集合，会有频繁的更新</span></p></li><li style=\\\"color: rgb(76, 76, 76);\\\"><p style=\\\"text-align: left;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\"><strong>Cloudflare OWASP Core Ruleset</strong>: Cloudflare 对 Open Web Application Security Project 的实现</span></p></li></ul><p style=\\\"min-height: 24px;\\\"><span style=\\\"font-size: 20px;\\\">WAF Attack score</span></p><p style=\\\"min-height: 24px; text-align: left;\\\"><span style=\\\"color: rgb(76, 76, 76); letter-spacing: 0.034em;\\\">这个功能其实是 Custom rules 里的一些选项的统称，只有高级付费用户（Business 和 Enterprise）才有这些选项，按 Cloudflare 官方的说法，WAF Attack score 是 Managed Rules 的补充，细分下来有 WAF SQLi Attack Score、WAF XSS Attack Score、WAF RCE Attack Score，因为绝大多数人也用不上就不展开讲了</span></p><h3 style=\\\"\\\"><span style=\\\"font-size: 20px;\\\">Uploaded content scanning</span></h3><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">这个功能只有 Enterprise（企业级）计划的用户才能使用，简单提一句就是帮你检查用户上传的文件是否有病毒。</span></p><h3 style=\\\"\\\"><span style=\\\"font-size: 20px;\\\">Security Analytics</span></h3><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">这个功能只有 Business 和 Enterprise 计划的用户才能使用。相比 Security Event 会有更丰富的图标供你分析你的网站</span></p><h2 style=\\\"font-size: 24px;\\\">🆚 概念区分</h2><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">Cloudflare WAF 的概念和功能非常多，有必要跟解释一些概念的差异</span></p><h3 style=\\\"\\\"><span style=\\\"font-size: 20px;\\\">WAF 入口区分</span></h3><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">Cloudflare 现在版本的 WAF 入口有两个，分别是：</span></p><ul style=\\\"\\\"><li style=\\\"color: rgb(76, 76, 76);\\\"><p style=\\\"\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">入口 1: Dashboard --&gt; WAF。可以看到是付费用户才能使用的功能，而且必须是<strong>企业级用户</strong>才能使用。主要功能是允许你设置一些账户级别的 Custom rulesets(规则集)，从而让账户下每个域名都能共享这些规则，而无需在每个域名下面一一设置</span></p></li></ul><p style=\\\"text-align: center;\\\"><img src=\\\":/ab664f989a0a400f930b81defd1317df\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; width: auto;\\\" width=\\\"auto\\\"/></p><ul style=\\\"\\\"><li style=\\\"color: rgb(76, 76, 76);\\\"><p style=\\\"\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">入口 2: Dashboard --&gt; 域名空间 --&gt; Security --&gt; WAF。这是我们绝大部分用户使用 WAF 的入口，上文已经有详细的介绍。</span></p></li></ul><p style=\\\"text-align: center;\\\"><img src=\\\":/511eb4ab92b04a13af532c32e22b11bd\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; width: auto;\\\" width=\\\"auto\\\"/></p><h3 style=\\\"\\\"><span style=\\\"font-size: 20px;\\\">Threat Score</span></h3><p style=\\\"text-align: center;\\\"><img src=\\\":/a125f5e7221d4257bf270c31c5dce15d\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; width: auto;\\\" width=\\\"auto\\\"/></p><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">在 Custom rule 的设置里能看到有一个选项叫 </span><code style=\\\"background-color: rgba(0, 0, 0, 0.06); border-width: 1px; border-style: solid; border-color: rgba(0, 0, 0, 0.08); border-radius: 2px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">Threat Score</span></code><span style=\\\"color: rgb(76, 76, 76);\\\">，Cloudflare 通过这个指标来衡量请求的 <strong>IP 信誉度</strong>，根据 Cloudflare 官方的说法该分数是根据 Project Honeypot 、外部公共 IP 信息以及 WAF 托管规则和 DDoS 的内部威胁情报计算的。分数从 0 到 100 分，越接近 0 分说明该 ip 风险越低，得分超过 10 分代表该 ip 可能来自垃圾邮件或者爬虫机器人，超过 40 分代表一些恶意行为，所以使用这个属性的时候，可以将 40 作为关键阈值</span></p><h3 style=\\\"\\\"><span style=\\\"font-size: 20px;\\\">Know Bots</span></h3><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">在 Custom rule 的设置里还有一个选项叫 </span><code style=\\\"background-color: rgba(0, 0, 0, 0.06); border-width: 1px; border-style: solid; border-color: rgba(0, 0, 0, 0.08); border-radius: 2px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">Known Bots</span></code><span style=\\\"color: rgb(76, 76, 76);\\\">指 Cloudflare Radar 发现的一些已知机器人，其中包括好的机器人也包括坏的机器人。结合 Threat score 我们可以制定一条规则：所有 </span><code style=\\\"background-color: rgba(0, 0, 0, 0.06); border-width: 1px; border-style: solid; border-color: rgba(0, 0, 0, 0.08); border-radius: 2px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">Threat score</span></code><span style=\\\"color: rgb(76, 76, 76);\\\"> 低于 40 的</span><code style=\\\"background-color: rgba(0, 0, 0, 0.06); border-width: 1px; border-style: solid; border-color: rgba(0, 0, 0, 0.08); border-radius: 2px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">Known Bots</span></code><span style=\\\"color: rgb(76, 76, 76);\\\">我们都放行</span></p><p style=\\\"text-align: center;\\\"><img src=\\\":/deed748506c84ec3b920ac8fd6b4c2de\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; width: auto;\\\" width=\\\"auto\\\"/></p><h3 style=\\\"\\\"><span style=\\\"font-size: 20px;\\\">Verified Bot Category</span></h3><p style=\\\"text-align: center;\\\"><img src=\\\":/2dfc9cb6a2c74cdc9ab17441f0700527\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; width: auto;\\\" width=\\\"auto\\\"/></p><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">在 Custom rule 的设置里还有一个选项叫 </span><code style=\\\"background-color: rgba(0, 0, 0, 0.06); border-width: 1px; border-style: solid; border-color: rgba(0, 0, 0, 0.08); border-radius: 2px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">Verified Bots Category</span></code><span style=\\\"color: rgb(76, 76, 76);\\\">指 Cloudflare 验证过的一些好的机器人的分类，例如搜索引擎的爬虫机器人，监控和分析相关的机器人等等，可以到 https://radar.cloudflare.com/traffic/verified-bots 查找是否有你想要的机器人，配置 Custom rule 的时候可以考虑使用这个属性。例如我们希望让所有搜索引擎的爬虫都能爬到我们网站的内容，那个Verified Bots Category 这一项就可以选择 Search Engine Crawler</span></p><p style=\\\"text-align: center;\\\"><img src=\\\":/7d9de71ed5f94d9a80f7411cc5a0d8c4\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; width: auto;\\\" width=\\\"auto\\\"/></p><h3 style=\\\"\\\"><span style=\\\"font-size: 20px;\\\">规则执行顺序</span></h3><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">前面我们提了很多规则，他们的执行顺序如下：</span></p><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">Custom rulesets（企业级用户才有的功能，作用于全部域名）--&gt; Custom rules（每个域名自己的规则）--&gt; Rate limiting rules --&gt; Managed Rules</span></p><h2 style=\\\"font-size: 24px;\\\">💡<span style=\\\"color: rgb(56, 56, 56);\\\">彩蛋</span></h2><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">如果我们需要对一批 ip 进行特定的处理，在 Custom rule 里设置规则时就需要一条一条添加 ip，非常麻烦，很多人不知道 Cloudflare 还有 List 功能，免费计划里这个功能可以让你设置一个 ip 集合，让你不用再手动添加大量的 ip。</span></p><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">入口：帐号首页 --&gt; Manage Account --&gt; Configurations --&gt; Lists</span></p><p style=\\\"text-align: center;\\\"><img src=\\\":/4e1386ceda32429197a74d766cbf51c3\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; width: auto;\\\" width=\\\"auto\\\"/></p><p style=\\\"min-height: 24px;\\\"><span style=\\\"letter-spacing: 0.034em; color: rgb(76, 76, 76);\\\">点击 Create list，免费计划只能添加跟 ip 相关的 list，付费计划可以创建其他类型的 List</span></p><p style=\\\"text-align: center;\\\"><img src=\\\":/1001768da66b4fdaa09195fe056da987\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; width: auto;\\\" width=\\\"auto\\\"/></p><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">我们回到 WAF --&gt; Custom rules。这里我们设置一条规则：屏蔽在 list_test 里的 ip 。Field 选择 </span><code style=\\\"background-color: rgba(0, 0, 0, 0.06); border-width: 1px; border-style: solid; border-color: rgba(0, 0, 0, 0.08); border-radius: 2px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">IP Source Address</span></code><span style=\\\"color: rgb(76, 76, 76);\\\">, Operator 选择 </span><code style=\\\"background-color: rgba(0, 0, 0, 0.06); border-width: 1px; border-style: solid; border-color: rgba(0, 0, 0, 0.08); border-radius: 2px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">is in</span></code><span style=\\\"color: rgb(76, 76, 76);\\\">，这里发现 value 无法下拉选择，我们只能通过修改表达式的方式实现。注意填写正确的list变量名，如果给 list 命名为 list_test 则变量为$list_test。设置成功后我们点击部署即可。</span></p><p style=\\\"text-align: center;\\\"><img src=\\\":/bfd595d84fcf4db0b64c26b966c3e1ac\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; width: auto;\\\" width=\\\"auto\\\"/></p><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">部署完我们查看规则详情，发现正确引用了自定义的 list，点击 Manage lists 又会跳转到 List 的设置界面</span></p><p style=\\\"text-align: center;\\\"><img src=\\\":/9d74ad5777d145efaebbe49992fa23b2\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; width: auto;\\\" width=\\\"auto\\\"/></p><p style=\\\"min-height: 24px;\\\"></p><h2 style=\\\"font-size: 24px;\\\">📝<span style=\\\"color: rgb(56, 56, 56);\\\"> 总结</span></h2><p style=\\\"min-height: 24px;\\\"><span style=\\\"color: rgb(76, 76, 76);\\\">WAF 提供的很多功能都需要高级付费用户才能使用（business 及以上），免费计划里的功能对于一般网站也够用了，可见 Cloudflare  WAF 主要服务于企业级用户赚钱。不同计划能用的功能我总结成下面的表格供大家参考</span></p><table width=\\\"1250\\\"><tbody><tr style=\\\"height: 33px;\\\"><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><br/></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px;\\\"><span style=\\\"\\\">Free<span style=\\\"letter-spacing: 0.034em;\\\">($0/月)</span></span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px;\\\"><span style=\\\"\\\">Pro ($20/月)</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px;\\\"><span style=\\\"\\\">Business ($200/月)</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px;\\\"><span style=\\\"\\\">Enterprise (Custom)</span></p></td></tr><tr style=\\\"height: 33px;\\\"><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px;\\\"><span style=\\\"\\\">Custom Rules</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">最多设置 5 条</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">最多设置 20 条</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">最多设置 100 条</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">最多设置 1000 条</span></p></td></tr><tr style=\\\"height: 33px;\\\"><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px;\\\"><span style=\\\"\\\">Rate limiting rules</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">只能设置 1 条</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">2 条</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">5 条</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">5 条以上</span></p></td></tr><tr style=\\\"height: 33px;\\\"><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px;\\\"><span style=\\\"\\\">Managed Rules</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">Free Managed Ruleset</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">✅</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">✅</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">✅</span></p></td></tr><tr style=\\\"height: 33px;\\\"><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px;\\\"><span style=\\\"\\\">Security Event</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">✅</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">✅</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">✅</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">✅</span></p></td></tr><tr style=\\\"height: 33px;\\\"><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px;\\\"><span style=\\\"\\\">Security Analytics</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">❌</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">✅</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">✅</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">✅</span></p></td></tr><tr style=\\\"height: 38px;\\\"><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px;\\\"><span style=\\\"\\\">WAF Attack Scores</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">❌</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">❌</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">只有Attack Score Class</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">✅</span></p></td></tr><tr style=\\\"height: 38px;\\\"><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px;\\\"><span style=\\\"\\\">Bot Score</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">❌</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">❌</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">❌</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">✅</span></p></td></tr><tr style=\\\"height: 33px;\\\"><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px;\\\"><span style=\\\"\\\">Uploaded content scanning</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">❌</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">❌</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">❌</span></p></td><td style=\\\"border-color: rgb(217, 217, 217);\\\" width=\\\"250\\\"><p style=\\\"min-height: 24px; text-align: center;\\\"><span style=\\\"\\\">✅</span></p></td></tr></tbody></table><p style=\\\"min-height: 24px;\\\"></p></div></div><div><div><div><div style=\\\"display: flex;\\\"><div style=\\\"color: rgba(0,0,0,.3);\\\"><span>修改于</span></div></div></div></div></div></div></div></div></span>\\\n</div></body></html>\\u0000\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":25142}]"
metadata_diff: {"new":{"id":"4bb1418e57b04f009ef508cb9556fdf8","parent_id":"f67288c3a0be4374b5d532b5dcc3aabc","latitude":"0.00000000","longitude":"0.00000000","altitude":"0.0000","author":"","source_url":"","is_todo":0,"todo_due":0,"todo_completed":0,"source":"joplin-desktop","source_application":"net.cozic.joplin-desktop","application_data":"","order":1764348817493,"markup_language":2,"is_shared":0,"share_id":"","conflict_original_id":"","master_key_id":"","user_data":"","deleted_time":0},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2025-11-28T21:03:21.190Z
created_time: 2025-11-28T21:03:21.190Z
type_: 13