返回首页
最新
模式漂移发生在以下情况下:<p><pre><code> 用户文档开始时为 { name: "John", email: "john@..." }
后来,有人添加了 { name: "Jane", email: "jane@...", profile: {...} }
更晚的时候: { name: "Bob", email: "bob@...", profile: "basic" }
</code></pre>
现在,profile 有时是一个对象,有时是一个字符串,有时完全缺失。<p>当这导致问题时:<p>javascript// 对某些文档有效,但对其他文档无效
user.profile.avatar // TypeError: 无法读取未定义的属性 'avatar' <p>安全漏洞出现的原因是:<p><pre><code> 你编写规则时假设模式是一致的:允许读取:如果 resource.data.profile.role == "admin"
但当 profile 是字符串或缺失时,这条规则的行为就会变得不可预测(通常会抛出评估错误,阻止合法用户访问,或者更糟糕的是,如果规则过于宽松,则留下漏洞)。
集合在没有适当规则的情况下被添加(如 bankInfo、userSecrets 等)。
测试集合(debugUsers、tempData)在生产环境中保持开放访问。
</code></pre>
真正的问题是:Firestore 不强制执行模式,并且没有内置的方法来审计整个数据库中的这些问题。<p>我在这方面遭遇了足够多的麻烦,因此构建了一个开源 CLI 工具,用于扫描模式不一致性和安全隐患:<p>npx lintbase scan firestore --key ./service-account.json<p>它会抽样你的集合,标记类型不匹配,并将集合名称与常见敏感数据指标进行模式匹配。<p>GitHub: github.com/lintbase/lintbase<p>社区提问:你目前如何在 Firestore 项目中捕捉这些问题?手动审计?还是只是等待生产中的错误?
为了庆祝宝可梦日,我想展示一些小而有趣的东西。我制作了PokeInvasion,这是一个Chrome扩展程序,可以在你浏览网页时让宝可梦出现。当扩展程序激活时,它们会从任何网站的角落弹出。
这主要是一个有趣的实验,适合像我这样的粉丝,永远想要抓住宝可梦!
源代码:
<a href="https://github.com/IvanR3D/pokeinvasion_chrome-extension" rel="nofollow">https://github.com/IvanR3D/pokeinvasion_chrome-extension</a>
欢迎反馈、想法或有趣的改进建议。
祝大家宝可梦日快乐! :)
你好,
我开发了一个 Caddy 中间件,实施了 x402 协议(由 Coinbase 提供),用于向 AI 爬虫收取真实货币以获取内容访问权限。
当 GPTBot、ClaudeBot 或任何已知的 AI 爬虫访问你的网站时,它会收到一个带有支付要求的 HTTP 402 响应。如果它支付(使用 Base 上的 USDC),就可以获取内容;如果不支付,则无法获取任何内容。
普通用户不会受到影响。
工作原理:
- 通过 User-Agent 检测到爬虫 → 返回 402 响应,包含价格和钱包地址
- 爬虫签署 USDC 支付(EIP-3009),并带上 X-PAYMENT 头重试请求
- 插件将请求转发至 x402.org 进行协调 → 在 Base 上进行链上结算
- USDC 直接从爬虫的钱包转入你的钱包
- 内容被提供
配置只需在 Caddyfile 中添加几行代码:
```
x402 {
pay_to 0xYOUR_WALLET
price 0.05
network base
exempt /robots.txt
}
```
它目前正在我的网站上运行。由于大多数爬虫尚不支持 x402,因此尚未收到任何付款,但它们会被适当的 402 响应阻止,而不是获取免费的内容。当它们采用此协议时,基础设施已经准备就绪。
该项目使用纯 Go(无 CGo)、SQLite 审计跟踪,并兼容 Cloudflare 头部。