.well-known/graph-api 背后的玄机:fb-instant-articles 的 OAuth 令牌与 RSA 签名安全设计完全解析
.well-known/graph-api 背后的玄机fb-instant-articles 的 OAuth 令牌与 RSA 签名安全设计完全解析【免费下载链接】fb-instant-articlesArchived (see Readme). Enable Facebook Instant Articles on your WordPress site.项目地址: https://gitcode.com/gh_mirrors/fb/fb-instant-articlesfb-instant-articles 是让 WordPress 网站接入 Facebook Instant Articles即时文章的经典插件。本文带你拆开它的安全黑盒OAuth 令牌如何触发文章缓存刷新.well-known/graph-api这条神秘路径里藏着什么以及 RSA 签名如何让整站不暴露任何令牌也能安全地让 Facebook 重新抓取文章 一、为什么插件需要安全地刷新 Facebook 缓存Instant Articles 由 Facebook 端缓存并预加载用户打开的是 Facebook 托管的快照。当你修改了 WordPress 里的一篇文章Facebook 那边看到的还是旧内容——除非你的网站主动通知 Facebook 这篇文章变了请重新抓取。这正是插件里两段核心代码要解决的问题位于facebook-instant-articles.php第 472–586 行OAuth 方式invalidate_scrape_on_update()在文章更新时携带 App ID、App Secret 和 Page Access Token 调用 Graph API 的scrapetrue接口RSA 签名方式rescrape_article()在没配置令牌时用本站私钥对请求 URL 签名实现无令牌重抓。两条路径互为兜底这也是整个安全设计的精髓所在 ️二、传统方式OAuth 令牌三件套在插件后台的Facebook App设置页中你需要填写三项内容字段定义见src/wizard/class-instant-articles-option-fb-app.php配置项作用Facebook App ID标识你的开发者应用Facebook App Secret验证应用身份的秘密Page Access Token代表你 Facebook 主页身份的访问令牌文章保存后插件用这三项构建 Graph SDK 实例向/?id文章URLscrapetrue发起 POSTFacebook 校验令牌通过后就会重新抓取该文章。优点是成熟通用缺点也很明显——Page Access Token 属于长期敏感凭据存进 WordPress 数据库后一旦站点被攻破令牌就可能泄露。于是v4.1.0 引入了更优雅的方案。三、.well-known/graph-api公钥发现的玄机所在翻开src/class-instant-articles-signer.php你会看到一个关键常量PUBLIC_KEY_PATH .well-known/graph-api/apikey.pub.well-known/是 Web 标准中约定俗成的能力发现路径类似.well-known/acme-challenge。Facebook 的抓取器访问你的站点时只需请求https://你的域名/.well-known/graph-api/apikey.pub就能拿到验证签名所需的 RSA 公钥——整个过程无需登录、无需令牌、无需人工配置。插件的实现非常巧妙output_public_key()第 25–32 行监听 WordPress 的wp钩子判断当前请求路径是否正是.well-known/graph-api/apikey.pub命中后返回 200 状态并直接输出公钥内容然后die()终止私钥首次使用时通过openssl_pkey_new()自动生成RSA 密钥对公钥与私钥分别存入 WordPress 选项instant-articles-rescrape-public-key和instant-articles-rescrape-private-key懒加载生成全程零配置✨四、一次无令牌重抓的完整链路文章保存时rescrape_article()按下述逻辑执行第 537–586 行令牌优先若后台配置了 Page Access Token直接返回——沿用 OAuth 路径保证向后兼容签名兜底若未配置令牌且服务器装有 OpenSSL 扩展则调用sign_request_path()构造签名 URL签名算法get_signature()第 74–77 行用私钥对完整请求路径做 RSA 签名SHA-1 摘要再经 Base64 URL 编码防重放URL 上追加当前时间戳ts参数Facebook 侧可拒绝过期请求防止旧签名被反复盗用 ⏱️旧链接也覆盖若文章改过 slug插件还会对每一个历史 URL 逐一签名重抓确保旧地址的缓存同步失效。最终发出的请求形如https://graph.facebook.com/?id文章URLscrapetruets时间戳hmac签名值Facebook 收到请求后先访问你的.well-known/graph-api/apikey.pub取公钥验证hmac通过、ts新鲜才真正执行重抓。整条链路中你的 OAuth 令牌自始至终没有出现在网络上——这就是 RSA 非对称签名的价值。五、安全设计要点速记非对称分离公网只暴露公钥私钥永不离开服务器令牌泄露风险降为零️标准路径发现.well-known/graph-api让验证方自动完成公钥获取无需手工交换证书⏱️时间戳防重放ts参数让签名有时效性双通道兜底令牌方式与签名方式共存老用户不受影响新站点开箱即用️懒加载密钥密钥对首次访问才生成并持久化到数据库零配置成本。 延伸阅读项目README.md已标注该插件进入维护归档状态Meta 于 2023 年 4 月停止 Instant Articles 支持但它的 OAuth 令牌管理 .well-known公钥发现 RSA 请求签名这套组合拳至今仍是网站间安全互信的教科书级案例。【免费下载链接】fb-instant-articlesArchived (see Readme). Enable Facebook Instant Articles on your WordPress site.项目地址: https://gitcode.com/gh_mirrors/fb/fb-instant-articles创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

next-page-tester排错指南:window.scrollTo、Hydration不匹配等6个常见错误及解决方案

next-page-tester排错指南:window.scrollTo、Hydration不匹配等6个常见错误及解决方案

next-page-tester排错指南:window.scrollTo、Hydration不匹配等6个常见错误及解决方案 【免费下载链接】next-page-tester DEPRECATED - DOM integration testing for Next.js 项目地址: https://gitcode.com/gh_mirrors/ne/next-page-tester next-page-test…

2026/11/8 0:27:45 阅读更多 →
如何在Foundry Fork环境中检测与测试zkSync链?foundry-devops的vm.createSelectFork完整测试实践

如何在Foundry Fork环境中检测与测试zkSync链?foundry-devops的vm.createSelectFork完整测试实践

如何在Foundry Fork环境中检测与测试zkSync链?foundry-devops的vm.createSelectFork完整测试实践 【免费下载链接】foundry-devops 项目地址: https://gitcode.com/gh_mirrors/fo/foundry-devops 想在 Foundry Fork 环境中同时测试以太坊主网和 zkSync 链&a…

2026/11/2 21:01:46 阅读更多 →
LaTeX2JS完整指南:如何在浏览器里直接编写真实的LaTeX数学公式与图示

LaTeX2JS完整指南:如何在浏览器里直接编写真实的LaTeX数学公式与图示

LaTeX2JS完整指南:如何在浏览器里直接编写真实的LaTeX数学公式与图示 【免费下载链接】LaTeX2JS LaTeX web components 项目地址: https://gitcode.com/gh_mirrors/la/LaTeX2JS LaTeX2JS 是一套开源 JavaScript 组件库,让你在浏览器里直接编写真实…

2026/11/2 4:32:11 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/13 5:13:25 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/13 5:13:25 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/13 5:13:25 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/12 18:22:26 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/12 18:22:25 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/13 5:13:25 阅读更多 →

日新闻

周新闻

月新闻