Token导航 LogoToken导航

MCP Server · 安全风控

webguard (Mark Liu)

WebGuard是一款为LLM代理设计的网页内容安全防护服务,提供SSRF防护和提示注入攻击扫描功能,适用于需要安全获取网页内容的场景。

未说明官方级别未说明来源级核验工具 3
RustClaude安全

快速开始

公开资料没有提供安装命令,按仓库或官方文档接入。
作者 / 组织
mark-liu
提供方
mark-liu

工具数量

3

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

0

仓库热度

收录来源

1 个

MCP World

选型结论

webguard (Mark Liu) 属于安全风控类 MCP Server,公开资料标注 3 个工具,通过传输方式未标注接入,适配 Claude,没有现成的安装命令;接入前先确认权限范围。

分类

安全风控

传输方式

未说明

认证方式

无需认证

部署方式

公开资料未说明

安装与配置

公开目录没有给出安装命令,需要按仓库 README安装;下面按同类条目的通用流程说明。

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    先确认运行方式

    公开资料没有标注传输方式,先看仓库 README,确认是本地进程还是远程地址。

  2. 2

    获取服务

    公开目录没有给出安装命令,按仓库 README里的步骤安装或获取服务。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 3 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

公开资料仍需确认:安装命令

详细介绍

WebGuard

为LLM代理提供安全的web获取MCP服务器。扫描获取内容以进行快速注入攻击 之前 它进入LLM上下文窗口。恶意内容被完全阻止——零泄漏令牌。

Rust重写 网络卫士mcp(Go)相同的安全模型,相同的测试套件,更小的二进制文件,没有GC暂停。

改变了什么(Go→ Rust)

  • 二进制:6MB对比10MB
  • 无垃圾收集器 --一致的亚毫秒扫描延迟
  • BurntSushi's aho corasick --ripgrep等级模式匹配
  • 流媒体正文读取 --在下载过程中强制执行大小限制,而不是在下载后
  • 每跳重定向SSRF验证 --根据阻止列表重新检查每个重定向
  • 相同的38种内置模式,相同的两级级联,相同的SSRF保护

安装

# Homebrew (macOS/Linux)
brew install mark-liu/tap/webguard

# Cargo (from crates.io)
cargo install webguard

# From source
git clone https://github.com/mark-liu/webguard
cd webguard
cargo build --release
# Binary at target/release/webguard

用法

# Add to Claude Code
claude mcp add webguard -s user -- /path/to/webguard

# Then use webguard_fetch in Claude Code to retrieve any URL

建筑

Claude Code → webguard_fetch(url)
                    │
        ┌───────────┴───────────┐
        │ 1. URL Validation     │  SSRF prevention, scheme check
        │ 2. DNS Pinning        │  Resolve + validate all IPs
        │ 3. HTTP Fetch         │  HTTPS, streaming body, retry
        │ 4. Redirect Recheck   │  Re-validate SSRF on every hop
        │ 5. Content Extraction │  HTML → markdown, strip scripts
        │ 6. Preprocessing      │  Comment extraction, entity decode,
        │                       │  base64/URL/hex decode, NFC normalize,
        │                       │  zero-width strip
        │ 7. Stage 1: Patterns  │  Aho-Corasick + regex (~0.3ms)
        │    ↳ Category filter  │  Suppress per-domain categories
        │    ↳ Doc-path hints   │  Auto-suppress for /docs/, /api/
        │ 8. Stage 2: Heuristic │  Density, clustering, proximity
        │ 9. Decision           │  PASS/WARN/BLOCK based on mode
        │ 10. Audit Log         │  JSONL with pattern IDs + timing
        └───────────────────────┘

工具

webguard_fetch

获取具有SSRF保护和提示注射扫描的URL。

参数类型必填说明
urlstringyes要获取的URL(http/https)
headersobject否自定义HTTP标头
rawbooleanno返回原始HTML而不是markdown
max_charsnumberno截断对N个字符的响应(0=无限制)

在PASS上:返回提取的markdown内容+元数据。 关于警告 (mode=warn):返回带有警告横幅+元数据的内容。 在块上 (模式=块,默认):返回 [BLOCKED: prompt injection detected] +元数据。零页面内容泄露。

webguard_status

返回服务器运行状况:版本、模式计数、模式、灵敏度、配置。

webguard_report

返回从JSONL审计日志聚合的审计报告。

参数类型必填说明
daysnumberno要包含的天数(默认值:7)

测试页面

用于验证检测的实时测试页面:https://mark-liu.github.io/webguard/test/

页面预期类别
clean.html通过--
inject.htmlblock指令重写(HTML注释)
exfil.html封锁撤离指令
encoded.htmlblock指令重写(base64)
authority.html阻止权限声明

分类器

两阶段级联——快速模式匹配,然后仅在需要时进行启发式评分。

第一阶段:模式匹配

通过混合Aho-Corasick(字面量,单O(N)通道)+正则表达式(结构模式),在8个类别中有38个内置模式。可以从外部YAML文件加载其他模式。

类别图案描述
指令覆盖7尝试覆盖或重置之前的指令
提示标记6伪造的系统/指令分隔符和聊天标记
权限声明6对开发人员、管理员或提升访问权限的虚假声明
exil指令5通过URL或隐藏元素进行数据泄露
输出操作4尝试约束或重定向模型输出
unicode混淆4零宽度字符、RTL重写、专用区域
编码注入3Base64/eval/字符码混淆有效载荷
分隔符注入3伪提示边界和角色注入

看 PATTERNS.md 查看带有示例和正则表达式定义的完整模式列表。

类别抑制

抑制每个域的特定模式类别以消除误报:

domains:
  "*.linkedin.com":
    suppress: ["authority-claim"]
  "interactivebrokers.com":
    suppress: ["encoded-injection"]

文档URL(/docs/, /api/, /reference/, /sdk/等)自动抑制 exfil-instruction 和 encoded-injection.

第二阶段:启发式评分

仅在第一阶段发现非关键匹配时运行。因素:

  • 密度:每1000个字符匹配(>2.0=1.2倍乘数)
  • 聚类:相互匹配在200个字符以内(1.5倍)
  • 邻近:权限声明+附近的指令覆盖(1.5倍)
  • 编码惩罚:解码内容匹配(1.3x)

灵敏度级别

级别阈值用例
low2.0文档、可信来源
medium1.0常规浏览(默认)
high0.5来源不可信

SSRF预防

任何TCP连接前的所有检查:

  • 私有IP范围(RFC 1918、环回、链路本地、运营商级NAT)
  • 云元数据(AWS、GCP、Azure、阿里巴巴、Oracle、ECS)
  • 八进制IP检测(0177.0.0.01)
  • URL编码主机名拒绝
  • @ URL权限拒绝
  • DNS固定(解析一次,连接到解析的IP)
  • 在每次重定向跳转时重新验证 (最多5个)--防止DNS重新绑定和重定向到内部旁路

配置

~/.config/webguard-mcp/config.yaml --使用零配置(合理的默认值):

sensitivity: medium
mode: block
max_body_size: 5242880
request_timeout: 15s
patterns_dir: ""

domains:
  "docs.python.org":
    sensitivity: low
    timeout: 30s
  "*.github.com":
    sensitivity: low
  "*.linkedin.com":
    suppress:
      - authority-claim

allowlist: []
blocklist: ["*.evil.com"]

audit:
  enabled: true
  path: ""  # default: ~/.local/share/webguard-mcp/audit.jsonl

外部图案

通过将YAML文件放置在 patterns_dir 目录:

# patterns.d/custom.yaml
patterns:
  - id: custom-001
    category: instruction-override
    severity: high
    type: literal
    value: "override all safety measures"

发展

cargo build              # Build debug binary
cargo test               # Run all 77 tests
cargo build --release    # Build optimised binary
cargo clippy             # Lint
cargo fmt --check        # Format check

项目结构

webguard/
├── src/
│   ├── main.rs              # CLI entry, signal handling, MCP boot
│   ├── server.rs            # MCP tool handlers (fetch/status/report)
│   ├── config.rs            # YAML config, domain overrides
│   ├── audit.rs             # JSONL audit logger + reader
│   ├── fetch/
│   │   ├── ssrf.rs          # URL + IP validation, DNS pinning
│   │   ├── client.rs        # HTTP fetch, redirect recheck, retry
│   │   └── extract.rs       # HTML → markdown
│   └── classify/
│       ├── engine.rs        # Two-stage orchestrator
│       ├── preprocess.rs    # 8-step content preprocessing
│       ├── stage1.rs        # Aho-Corasick + regex scanner
│       ├── stage2.rs        # Heuristic scoring
│       ├── patterns.rs      # 38 built-in patterns
│       ├── external.rs      # External pattern YAML loader
│       ├── encoding.rs      # Base64/URL/hex/ROT13 decode
│       └── result.rs        # Result types
├── docs/test/               # GitHub Pages test pages
├── testdata/                # Test fixtures (14 JSON files)
└── patterns.d/              # External pattern directory

相关项目

  • 网络卫士mcp --原始的Go实现(被此仓库取代)
  • 麦普加德 --MCP stdio代理,扫描来自任何MCP服务器(Discord、Telegram等)的工具结果,以便及时注入
  • 折断 --用于Playwright快照的MCP stdio压缩代理

许可证

麻省理工学院

工具与能力

工具数量

3

资源数量

0

提示词数量

0

能力标签

网页安全Rust本地部署SSRF防护提示注入检测LLM代理内容过滤

支持客户端

Claude

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

资产与漏洞排查

批量查询资产和漏洞信息,输出待修清单。

日志审计

从日志里筛出异常访问和高风险操作。

合规检查

按规则核对配置项,记录不符合项。

选择建议

值得选的地方

  • 只提供 3 个工具,职责集中,接入后不容易误操作。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • 公开资料没有可直接复制的安装命令,第一次接入要自己找入口。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在安全风控场景里让模型直接调用外部能力的人。
  • 已经在用 Claude 的用户,接入路径最短。
  • 愿意照着官方文档一步步配环境的人。

不太适合

  • 希望一条命令就装好、不想看文档的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
webguard (Mark Liu)

MCP World · 本页

3未说明未标注1 个2026-05-17
Modelcontextprotocol C22988b0

MCP World

0stdio有1 个2026-05-17
Hexstrike AI

MCP World

0stdio有1 个2026-05-17
Cyber Strike AI

MCP World

75未说明未标注1 个2026-05-17
MCP Scan

MCP World

0stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

webguard (Mark Liu) 怎么安装?

公开目录没有给出可以直接复制的安装命令,需要按仓库 README里的步骤安装;装好后写进客户端的 MCP 配置再重启。

webguard (Mark Liu) 怎么在 Claude Desktop、Cursor 里配置?

它是传输方式未标注,客户端配置里要写启动命令和参数,运行环境是 未标注;保存后完全退出客户端再打开,配置才会生效。

webguard (Mark Liu) 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

webguard (Mark Liu) 需要 API Key 吗?

公开资料标注为无需认证,装好就能连;如果实际调用时报鉴权错误,按官方文档补上凭据。

webguard (Mark Liu) 支持哪些客户端?

公开资料标注支持 Claude;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP