Hetty Scope排除规则:从根源解决无关请求干扰问题

Hetty Scope排除规则:从根源解决无关请求干扰问题

【免费下载链接】hetty An HTTP toolkit for security research. 【免费下载链接】hetty 项目地址: https://gitcode.com/GitHub_Trending/he/hetty

你是否正被这些问题困扰?

在Web安全测试过程中,80%的精力往往消耗在筛选有效请求上——浏览器持续加载的广告脚本、前端框架的心跳检测、第三方统计像素……这些与目标功能无关的流量会严重干扰测试效率。Hetty的Scope(作用域)排除规则功能正是为解决这一痛点而生,它能像智能滤网一样精准拦截无关请求,让你专注于真正有价值的测试目标。

读完本文后,你将掌握:

  • 基于正则表达式的三层过滤机制(URL/Header/Body)
  • 5类高频场景的排除规则模板
  • 可视化规则管理界面的高效操作技巧
  • 规则优先级与冲突解决策略
  • 性能优化指南(避免90%的规则误匹配)

Scope排除规则核心原理

什么是Scope排除规则?

Scope(作用域)排除规则是Hetty实现请求过滤的核心机制,通过预定义的匹配条件,决定哪些HTTP请求应该被代理忽略。它采用"匹配即排除"的工作模式,当请求满足任何一条排除规则时,将不会被记录或拦截。

// 核心数据结构定义(pkg/scope/scope.go)
type Rule struct {
  URL    *regexp.Regexp  // URL正则匹配
  Header Header          // 请求头匹配规则
  Body   *regexp.Regexp  // 请求体正则匹配
}

type Header struct {
  Key   *regexp.Regexp  // 头部键名正则
  Value *regexp.Regexp  // 头部值正则
}

请求过滤决策流程

mermaid

关键特性

  • 规则采用"短路评估":只要匹配一条规则即排除
  • 支持全量请求属性匹配:URL/方法/头信息/请求体
  • 基于Go标准正则引擎:支持RE2语法,避免灾难性回溯

规则语法完全指南

基础语法规则

匹配维度语法类型匹配逻辑示例表达式
URL正则表达式完整URL字符串匹配^https?://(www\.)?example\.com
Header.Key正则表达式不区分大小写匹配User-Agent
Header.Value正则表达式完全匹配值内容Chrome/9[0-9]\.
Body正则表达式匹配请求体任意位置password=.*

注意:所有正则表达式默认开启"点匹配换行符"模式,即.可匹配包括换行在内的任意字符

特殊匹配模式

  1. 精确匹配:使用^$锚定首尾

    ^POST$          // 精确匹配POST方法
    ^/api/v1/users$ // 精确匹配路径
    
  2. 部分匹配:省略锚定符

    .js$            // 匹配所有JS文件
    sessionid=      // 匹配包含会话ID的URL
    
  3. 否定匹配:使用(?!pattern)负向预查

    ^(?!.*\.css).*$ // 排除所有CSS文件
    

可视化规则管理界面

添加排除规则

Hetty提供直观的规则管理界面,通过以下步骤添加排除规则:

  1. 导航至Scope页面(左侧菜单栏)
  2. 点击Add Rule按钮打开规则创建表单
  3. 选择规则类型(当前仅支持URL规则)
  4. 输入正则表达式
  5. 点击Add rule提交
// 前端添加规则核心代码(admin/src/features/scope/components/AddRule.tsx)
const [setScope] = useSetScopeMutation({
  onCompleted({ setScope }) {
    client.writeQuery({
      query: ScopeDocument,
      data: { scope: setScope },
    });
  },
});

// 规则提交逻辑
const handleSubmit = (e) => {
  e.preventDefault();
  setScope({
    variables: {
      scope: [...existingRules, { url: expression }],
    },
  });
};

规则管理操作

操作界面元素快捷键说明
查看规则规则列表-显示所有已添加的排除规则
编辑规则规则项右键菜单-仅支持重新输入正则表达式
删除规则规则项右侧删除图标Delete点击后立即删除,无确认提示
批量操作暂无-目前不支持批量导入/导出

界面提示:当规则输入框获得焦点时,底部会显示最近使用的5条规则历史记录

实战场景规则模板

1. 静态资源排除

# 排除所有图片资源
\.(png|jpg|jpeg|gif|ico|svg)$

# 排除CSS/JS资源
\.(css|js|map|json)$

# 排除字体文件
\.(woff|woff2|ttf|eot)$

2. 第三方服务排除

# 排除Google Analytics
^https?://www\.google-analytics\.com

# 排除百度统计
^https?://hm\.baidu\.com

# 排除所有广告域名
^https?://(.*\.)?(doubleclick\.net|adroll\.com|ads\.twitter\.com)

3. 特定请求方法排除

# 排除OPTIONS预检请求
^OPTIONS$

# 排除HEAD方法请求
^HEAD$

4. API路径排除

# 排除健康检查接口
^/api/healthcheck$

# 排除监控指标接口
^/metrics$

# 排除日志上报接口
^/api/v1/logs

5. 认证相关排除

# 排除登录请求(避免反复拦截登录)
^/login$

# 排除Token刷新请求
^/api/v1/auth/refresh$

高级应用技巧

规则优先级策略

虽然Hetty规则匹配采用"短路逻辑",但合理的规则排序仍能提高匹配效率:

  1. 高频规则前置:将匹配频率高的规则放在前面
  2. 精确规则前置:比模糊规则更早匹配,减少回溯
  3. 复杂规则后置:资源密集型的复杂正则表达式放在最后

mermaid

性能优化建议

  1. 限制Body规则数量:Body匹配需要读取完整请求体,建议不超过3条

  2. 简化正则表达式

    • 避免过度回溯(如(.*)*
    • 使用非捕获组(?:pattern)代替捕获组(pattern)
    • 优先使用字符类[a-z]而非通配符.
  3. 规则测试工具:在添加复杂规则前,使用在线正则测试工具验证:

与拦截功能协同使用

Scope排除规则与请求拦截功能配合使用可实现更精细的流量控制:

  1. Settings页面启用请求拦截
  2. 配置拦截过滤器只针对特定路径:
    url =~ "/api/v1" AND method = "POST"
    
  3. 添加Scope排除规则过滤已知安全的API:
    ^/api/v1/users/self$
    

这种组合可确保只拦截真正需要关注的请求。

常见问题与解决方案

规则不生效

排查步骤

  1. 检查正则表达式是否正确(可使用在线工具验证)
  2. 确认规则类型与目标匹配维度是否一致
  3. 查看Hetty日志是否有正则解析错误:
    hetty --verbose | grep "scope rule"
    

常见原因

  • 特殊字符未转义(如.需写作\.
  • 锚点使用不当(如example.com会匹配aexample.com
  • 规则类型错误(如用URL规则匹配请求方法)

误排除问题

解决方案

  1. 使用更精确的正则表达式:

    # 错误:会排除包含"admin"的所有URL
    admin
    
    # 正确:仅排除以"admin"开头的路径
    ^/admin
    
  2. 添加上下文约束:

    # 排除JSON格式的日志请求
    ^/logs AND Content-Type: application/json
    
  3. 使用负向预查排除特殊情况:

    ^/api(?!/public).*$  # 排除/api下非/public路径
    

性能下降

当代理出现明显延迟时,可能是由于:

  1. 过度复杂的正则表达式

    • 避免嵌套量词(如(a+)+
    • 限制重复次数(如{1,10}而非+
  2. 过多Body规则

    • 将Body规则数量控制在3条以内
    • 对大文件使用长度限制预判

规则迁移与备份

由于Hetty目前不提供规则导出功能,可通过以下方式备份Scope规则:

  1. 使用浏览器开发者工具:

    • 打开Network面板
    • 过滤graphql请求
    • 找到setScope mutation请求
    • 复制请求体中的scope数组
  2. 手动记录重要规则到文本文件,格式建议:

    # 排除静态资源
    \.(png|jpg|css|js)$
    
    # 排除第三方分析
    ^https?://www\.google-analytics\.com
    

总结与最佳实践

Scope排除规则是Hetty提升测试效率的核心功能,通过合理配置,可将无关请求过滤率提升80%以上。最佳实践总结:

  1. 规则设计原则

    • 单一职责:一条规则只排除一类请求
    • 最小权限:规则尽可能精确
    • 可维护性:添加注释说明规则用途
  2. 规则组合策略

    • 先排除静态资源
    • 再排除第三方服务
    • 最后排除特定API路径
  3. 定期审计

    • 每周审查规则有效性
    • 移除不再需要的规则
    • 合并重复或相似规则

通过本文介绍的Scope排除规则功能,你可以彻底告别无关请求的干扰,将宝贵的测试精力集中在真正需要关注的目标上。立即体验Hetty的强大过滤能力,提升你的Web安全测试效率!

下期预告:Hetty高级拦截技巧——如何利用断点和修改功能进行渗透测试

【免费下载链接】hetty An HTTP toolkit for security research. 【免费下载链接】hetty 项目地址: https://gitcode.com/GitHub_Trending/he/hetty

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值