1作者: Madia1202 个月前原帖
模式漂移发生在以下情况下:<p><pre><code> 用户文档开始时为 { name: &quot;John&quot;, email: &quot;john@...&quot; } 后来,有人添加了 { name: &quot;Jane&quot;, email: &quot;jane@...&quot;, profile: {...} } 更晚的时候: { name: &quot;Bob&quot;, email: &quot;bob@...&quot;, profile: &quot;basic&quot; } </code></pre> 现在,profile 有时是一个对象,有时是一个字符串,有时完全缺失。<p>当这导致问题时:<p>javascript&#x2F;&#x2F; 对某些文档有效,但对其他文档无效 user.profile.avatar &#x2F;&#x2F; TypeError: 无法读取未定义的属性 &#x27;avatar&#x27; <p>安全漏洞出现的原因是:<p><pre><code> 你编写规则时假设模式是一致的:允许读取:如果 resource.data.profile.role == &quot;admin&quot; 但当 profile 是字符串或缺失时,这条规则的行为就会变得不可预测(通常会抛出评估错误,阻止合法用户访问,或者更糟糕的是,如果规则过于宽松,则留下漏洞)。 集合在没有适当规则的情况下被添加(如 bankInfo、userSecrets 等)。 测试集合(debugUsers、tempData)在生产环境中保持开放访问。 </code></pre> 真正的问题是:Firestore 不强制执行模式,并且没有内置的方法来审计整个数据库中的这些问题。<p>我在这方面遭遇了足够多的麻烦,因此构建了一个开源 CLI 工具,用于扫描模式不一致性和安全隐患:<p>npx lintbase scan firestore --key .&#x2F;service-account.json<p>它会抽样你的集合,标记类型不匹配,并将集合名称与常见敏感数据指标进行模式匹配。<p>GitHub: github.com&#x2F;lintbase&#x2F;lintbase<p>社区提问:你目前如何在 Firestore 项目中捕捉这些问题?手动审计?还是只是等待生产中的错误?
1作者: IvanR3D2 个月前原帖
为了庆祝宝可梦日,我想展示一些小而有趣的东西。我制作了PokeInvasion,这是一个Chrome扩展程序,可以在你浏览网页时让宝可梦出现。当扩展程序激活时,它们会从任何网站的角落弹出。 这主要是一个有趣的实验,适合像我这样的粉丝,永远想要抓住宝可梦! 源代码: <a href="https://github.com/IvanR3D/pokeinvasion_chrome-extension" rel="nofollow">https://github.com/IvanR3D/pokeinvasion_chrome-extension</a> 欢迎反馈、想法或有趣的改进建议。 祝大家宝可梦日快乐! :)
1作者: maxerickson2 个月前原帖
1作者: paolobietolini2 个月前原帖
你好, 我开发了一个 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 头部。