跳转到内容

浏览器安全 — 域名隔离与 Prompt-Injection 防御

学习目标

  • 理解 Browser Use 在浏览器环境中的域名级沙箱设计
  • 掌握敏感数据的安全注入和域名验证
  • 了解弹窗自动关闭作为 prompt-injection 防御

前置知识

下文假设你已理解安全沙箱的通用原理,直接聚焦 Browser Use 在浏览器环境中的具体实现。


项目实践

域名级沙箱

在浏览器自动化场景中,沙箱的边界是域名而非进程。Browser Use 通过 BrowserProfileallowed_domainsprohibited_domains 实现:

browser = BrowserSession(
allowed_domains=["*.google.com", "github.com"],
prohibited_domains=["malicious-site.com"],
)

域模式匹配

  • 精确匹配:"github.com" 仅匹配 github.com
  • 通配符:"*.google.com" 匹配 mail.google.comdocs.google.com 等子域
  • 协议无关:匹配时忽略 http:// / https://

敏感数据域级注入

Agentsensitive_data 参数支持域级凭据绑定:

agent = Agent(
task="...",
sensitive_data={
"github.com": {"username": "user", "password": "pass"},
"*.google.com": {"email": "user@gmail.com"},
},
)

安全验证

  • 凭据仅在 allowed_domains 匹配的域上自动注入
  • sensitive_data 包含域级凭据但 allowed_domains 未设置时,发出安全警告
  • sensitive_data 中的域模式不在 allowed_domains 覆盖范围内时,发出具体警告
WARNING: ⚠️ Agent(sensitive_data=••••••••) was provided but
Browser(allowed_domains=[...]) is not locked down! ⚠️
If the agent visits a malicious website and encounters a
prompt-injection attack, your sensitive_data may be exposed!

弹窗自动关闭

PopupsWatchdog 监听 JavaScript 对话框事件(alert()confirm()prompt()),自动关闭并记录消息:

Auto-closed JavaScript dialogs:
- Enter your API key
- Confirm deletion of your account

被自动关闭的消息注入到 Agent 上下文中,让 Agent 知道发生了什么。

为什么这是 prompt-injection 防御的关键一环: 恶意网页可以通过 prompt("Enter your GitHub password") 诱导 Agent 输出凭据。弹窗自动关闭阻止了这种攻击向量。

安全 Watchdog 架构

SecurityWatchdog 是事件总线中的一个 watchdog 服务,监听导航事件并验证目标域:


问题与规避

子域匹配不精确

问题"*.google.com" 匹配所有子域,包括可能不安全的第三方子域。

对策

  • 使用精确匹配而非通配符(如 "mail.google.com" 而非 "*.google.com"
  • 设置 prohibited_domains 黑名单

凭据泄露 via Prompt-Injection

问题:即使有域名限制,攻击者仍可能通过视觉欺骗(如伪造登录页面)诱导 Agent。

对策

  • 弹窗自动关闭阻止了 prompt() 窃取
  • 域名白名单限制了 Agent 只能访问已知安全的域
  • 建议配合 Browser Use Cloud 使用 stealth 浏览器,减少被检测风险

禁用域名限制时的安全警告被忽略

问题:设置了 sensitive_data 但忘记配置 allowed_domains

对策

  • Browser Use 在初始化时发出醒目警告(黄色/红色终端输出)
  • 日志级别为 warning 而非 debug

设计取舍

域名级 vs 页面级沙箱

方案优势代价
域名级(当前)实现简单、性能好同一域内的不同页面可能有不同风险
页面级(URL 匹配)更精细控制规则复杂、维护成本高

Browser Use 选择域名级是因为大多数安全场景以域为边界。

弹窗自动关闭 vs 转发给 Agent

方案优势代价
自动关闭安全、简单合法弹窗也被关闭
转发给 Agent灵活、可处理Agent 可能被欺骗

Browser Use 选择自动关闭是因为 prompt-injection 的安全风险大于关闭合法弹窗的不便。


参考来源