使用名为FetchMetadata的新功能保护您的资源免受网络攻击
2020年6月,谷歌在web.dev上发布了一篇名为“Protect your resources from web attacks with Fetch Metadata”的文章。这是一组新的请求头,用于保护您的网站免受常见网络应用的攻击向量。
什么是FetchMetadata
简单来说,FetchMetadata会在您的访客对Joomla网站发出的每一个请求中都发送一组http头,告知应用请求的资源是如何被调用的,从而使应用能够决定如何响应。该规范提到了以下头:Sec-Fetch-Site、Sec-Fetch-Dest、Sec-Fetch-Mode、Sec-Fetch-User,如果您想了解更多细节。
web.dev文章还提到了FetchMetadata有助于保护以下跨源攻击向量:
实施FetchMetadata的步骤
在该文章中,作者提到了5个步骤或更好的规则来实现FetchMetadata。让我们来看看它们。
步骤1:允许来自不发送Fetch Metadata的浏览器的请求
并非所有浏览器都实现了FetchMetadata,因此目前我们仍然希望允许所有尚未实现这些功能的浏览器。您可以在Mozilla MDN上查看当前的浏览器兼容性矩阵,截至本文撰写时,它在Chrome、Edge和Opera的桌面和移动浏览器中得到了支持。Firefox版本仍在开发中。
步骤 2:允许同站和由浏览器发起的请求
此规则确保所有来自同一站点的请求(例如加载JSON端点或图片)以及您站点上的浏览器发起的请求(如书签或导航)仍然被允许。
步骤 3:允许简单的顶级导航和iframing
此规则允许顶级导航请求和iframing,因为我们仍希望我们的站点在链接到其他站点时以及嵌入(例如使用iframe)时被允许打开。
步骤 4:排除旨在服务跨站流量的端点(可选)
您的站点的一些端点,如API端点,由于其性质,预计将接受跨站流量,因此它们必须在此处列入白名单,以确保它们仍然可以被加载。
步骤 5:拒绝所有其他跨站且非导航的请求
最后一条规则很简单:上述规则未捕获的所有内容都将被站点拒绝。
我如何将FetchMetadata添加到我的Joomla站点中?
我们为您提供了解决方案。对于所有触发Joomla应用程序的请求,我们可以检测浏览器设置的标头,并使用它们来决定是否加载站点。
因此,我们将此作为一项任务,并构建了一个免费且易于使用的Joomla插件,该插件实现了您站点的规则。它被称为“zero24的FetchMetadata”,可在JED以及GitHub上找到。
要使用它,只需安装插件并激活它即可。上述所有规则都由实现覆盖,您唯一需要配置的时候是在您提供跨站端点时。未来,如果有更多具体规则或仅报告功能的需求,我们可能会添加更多选项。您可以在GitHub上就有关该插件、错误或功能请求的任何问题与我们联系。
下一步是什么?
由于Joomla 4.0不接受任何新功能,但我们认为这是所有Joomla站点的重要保护功能,我们计划将FetchMetadata实现作为Joomla 4.1的核心功能提出,但到目前为止,该代码尚未编写。在此期间,您可以使用插件保护您的Joomla站点。
--
本文由插件开发者撰写,不代表Joomla项目的观点或愿景。
--- 2020年12月20日更新 ---
翻译
本文已被翻译成德语:https://joomlainfo.ch/2020/12/17/schuetze-deine-joomla-inhalte-mit-fetch-metadata/
在Joomla社区杂志上发表的一些文章代表了作者对特定主题的个人观点或经验,可能并不符合Joomla项目的官方立场。
通过接受,您将访问 https://magazine.joomla.net.cn/ 以外的第三方外部服务
评论