本文将展示在不同场景下的最佳编写实践和一些编写规范
1. 脚本应该通过 lint 的校验
2. 将越常命中的规则放在越靠前的位置
3. 如无特殊需要,不编写主动指纹,避免请求量爆炸
4. 在使用关键字进行匹配时,要求使用包含产品特征的关键字,而且尽可能长,避免误报
discuz_uid
等。
特别的:部分通用系统存在二次开发修改title的情况,因此title只能作为辅助判断的逻辑,只能算作加强规则,不能作为决定性证据5. 当有多条被动指纹规则时,尽量使用&&组合两条规则,减少单条规则容易造成的误报
6. 如无特殊需要,指纹规则中不带攻击特征,避免被 WAF 拦截
7. 优先使用 contains、其次 icontains,减少运行过程中不必要的资源消耗
8. 在处理所有的 404 页面时统一使用get404Path()函数获取路径
9. 如果能自动获取 icon, 尽量通过 getIconContent 来自动获取图标内容
10. 取特征时,不要在header头Set-Cookie中取
11. 尽量使用推荐的规则名称,当有多个同类规则时使用数字隔开
12. 当存在多个版本匹配的规则的时候,建议使用payloads进行编写,提高插件的可阅读性,必要时可以使用三目运算符做判断
favicon_hash
md5_in_[position]
kw_in_body
kw_in_header || kw_in_[header_name]