Joomla 4: 使用安全头部功能
你的Joomla站点有多安全?Joomla 4的新功能可以帮助您从网站内部管理安全头部,从而使保护您的站点更加容易。
在保护您的网站时,您可以实施一系列HTTP头部。其中,一个名为内容安全策略(CSP)的特定头部可以通过应用内置到浏览器中的现代保护措施,为您的网站和用户提供额外的安全保护层。
这包括跨站脚本(XSS)和数据注入攻击,可能导致从网站篡改到数据盗窃,甚至传播垃圾邮件和恶意软件。显然,这是每个网站所有者都希望避免的事情。
通常,HTTP头部可以通过以下三种方式实现
- 使用httpd.conf文件进行服务器级别配置
- 通过托管账户中的.htaccess文件
- 特定页面中的元元素。
所有这些方法都很有效,但通常需要一些技术知识,了解如何在您的托管环境中以及Joomla中实施它们。因此,许多网站没有实施这些头部来保护他们的网站。
Joomla 4的一部分,Yves Hoppe、David Jardin 和 Tobias Zulauf 为Joomla核心开发了新的工具,帮助每个站点集成商设置头部。这使得更广泛的用户能够理解和设置这些头部,甚至可以默认应用一些基本保护。在五月底的JandBeyond之后,我和Tobias讨论了新功能。
帕特里克:在我5月份的JCM文章《Joomla 4: 期待什么?》之前,我安装了Joomla 4 Beta Dev,开始了解新功能,特别是工作流。
在我开始考虑为那篇文章集中关注的内容列表中,内容安全策略是出现在更多技术特性中的一项,所以我将其放在一边,留待以后再看。
然而,随着一些人的指出,这既是 Joomla 中的一个强大且重要的新安全特性。关于您开发新的 HTTP 安全头和内容安全策略组件的背景是什么?
托拜亚斯:我和大卫参加了在德国举行的安全会议,在那里我了解到 HTTP 头和内容安全策略。在那次会后,我开始为 Joomla 3.x 开发一个插件,让我能够从 Joomla 后端设置这些头部。
随着该插件的发布和我在 CSP 上的更多投入,我们讨论了如何轻松地将 CSP 实现到 Joomla 核心中,因为当时 Joomla 安全打击小组定期报告的主要问题类型之一是跨站脚本(XSS)问题。
后来,大卫提出了一个很好的想法,即使用 CSP 的 report-uri 端点,允许网站设置为“检测”模式,这样可以让您的网站收集您网站的违规行为,并提供一个 UI 界面来创建最终 CSP 规则。在科隆的 JSST 疾走会上,伊夫斯构建了 com_csp 的初始版本。
帕特里克:在您的JandBeyond 演示文稿中,您提供了一些有趣的安全问题示例,这些安全问题正是该设计用来保护的对象。
CSS 是一个常见的安全问题,CSP 安全头部可以避免这个问题,这在下面链接的一些资源中得到了更多的强调。
不过,在您的视频中吸引我注意的是“最后饼干胜利”场景。作为一个想在博客上添加联盟链接的人,我会考虑使用 CSP 来防止这种情况在我的网站上发生。你能更详细地解释这个概念以及 CSP 如何帮助吗?
托拜亚斯:这个例子基于一篇来自德国 IT 新闻网站的文章。基本上,当你从你的网站设置一个联盟推荐链接时,该网站会通过浏览器中的饼干保存你的推荐代码。当用户现在通过另一个网站或另一个链接访问时,那个饼干会被最新的推荐代码所替代。这是可以接受的,也是按照设计来工作的。
但是,有一些在访客的浏览器中运行的浏览器插件会注入 JavaScript,用那个插件的开发者的饼干替换它。但是,如果你的网站不允许浏览器插件注入不安全的 JavaScript 代码,那么这种情况就不再会在你的网站上发生。
最终,我们可以确保只有我们控制我们网站上的体验,并且只允许加载受信任的外部来源。
帕特里克:那么让我们来看看 Joomla 4 中的工具。在 Joomla 文档、Tobias 的 JandBeyond 会话,以及安装一个 J4 Beta Dev 版本来亲自测试事物之后,我认为我已经制定了一个读者可以考虑遵循的 CSP 实施的大致工作流程。
- 检查“系统 - HTTP 头部”插件是否开启。在 Joomla 4 中默认开启。
- 接下来,转到“系统 > 内容安全策略 > 选项”,以配置 CSP。
- 启用“内容安全策略(CSP)”开关,并最初将模式设置为“检测”。
- 现在,该组件将检测并记录网站上报告的所有违规头部。
- 让网站在检测模式下运行一段时间后,再次转到“系统 > 内容安全策略”并审查收集到的违规行为
- 关于已知事物和域的所有报告都可以设置为发布。
- 一旦设置了该方式的白名单,请切换到自动模式以应用内容安全策略。
- 保存选项后,内容安全策略将生效。
Joomla 4中的此功能默认开启,但网站实施时可选。为什么你认为所有用户都应该认真考虑在Joomla 4安装中将此功能开启呢?
托比亚斯:这里有不同的事情。通用HTTP头和内容安全策略。
您可以在您提到的“系统 - HTTP头”插件中轻松配置第一组头。大部分可用的头都带有合理的默认值。您通常需要自行启用的只有“严格传输安全(HSTS)”头,因为这只适用于运行在https上的网站。
但后者并不像按下一个按钮那么简单,不再关心这件事。当您想设置内容安全策略时,我强烈建议您在启用它之前了解该头的作用,第二个建议是从一个简单的站点开始。为此,我推荐Scott Helme的这篇文章:“内容安全策略 - 入门”,以及该文章下的“CSP速查表”。在这里,我收集了一些关于CSP的更多网站。当您熟悉这个话题时,请随时查看我们内置的工具来保护您的站点。
但回到您的问题,为什么我认为每个人都应该查看http安全头。这很简单:随着时间的推移,网络和浏览器已经发展,并建立了先进的工具来保护和改进您的站点。自然,这些新工具可能会破坏现有站点或需要一些输入,因此浏览器往往不会默认启用这些功能。
使用HTTP头,作为网站管理员,我们可以选择启用这些现代保护措施,并告诉浏览器保护我们的站点。从简单的事情开始,比如不允许我们的站点作为iframe加载,或者告诉浏览器不要向不安全的站点泄露引用者信息,到更高级的功能,如内容安全策略。
在4.0版本中,核心迈出了正确方向的一步,提供了强大的基本配置的HTTP安全头,并提供使用高级功能的工具来保护您的站点。
帕特里克:我在提交五月份的文章时遇到了内容安全策略对Joomla.org站点的影响。当内容安全策略开启但缺少一些白名单条目时,您可以很快发现您的站点在处理各种内容类型时存在问题。
我在Joomla.org站点上遇到的一些示例是用户在开启HTTP头时可能会遇到的常见问题——链接到Google字体或Adobe TypeKit,嵌入YouTube视频,甚至设置两步验证,其中需要显示Google Authenticator QR码。
一旦内容安全策略报告在检测模式下发现您的站点上使用的内容,您只需要发布该内容,就可以允许其继续进行。
用户通常在报告的项目列表中看到哪些其他内容需要审查?
托拜亚斯:您应该期望看到您包括的所有网站和服务,例如谷歌服务,您还应该感觉到它们为谷歌地图或YouTube加载并正常运行。但根据您的网站在检测阶段有多少不同用户,您也可能注意到一些您无法解释或利用的东西。在这种情况下,一个好的资源是谷歌搜索,以及这个GitHub仓库“CSP,WTF?”在那里您可以找到一个长列表的解释和甚至未解释的实时发生的报告。
帕特里克:在审计被阻止的元素时,用户可以依赖的经验法则是什么?
托拜亚斯:经验法则是以下。在将某些无法解释的内容列入白名单之前,尝试自己重现错误,看看在列入白名单提到的报告后是否已修复。在初始设置完成后,实施一些长时间报告可能是有意义的。我 personally use a simple PHP script that I also published on GitHub called “csp-reporter-php”。对于 joomla.org 网络站点,我们今天使用一个名为 report-uri.com 的服务。
帕特里克:现在扩展开发者应该考虑哪些事情来帮助用户在安装扩展时简化对他们的内容安全策略的更改?
托拜亚斯:内容安全策略(CSP)提供的主要保护是禁止任何内联JavaScript和CSS,这可以消除许多针对您的用户和访客的XSS攻击。但是,当启用时,这也适用于您的扩展中的合法用途。
对于4.0,建议在您的扩展的前端运行严格的内容安全策略。对于4.1兼容性,建议这也适用于您的后端。
我们知道仍然需要内联JavaScript和CSS,因此我们已经在文档API中实现了nonce和hash支持,当您使用它们时,核心将确保它们被列入白名单,但我们仍然会阻止任何恶意内容以保护我们的网站。
有关更多详细信息,请参阅 HTTP Header Management Documentation. 请随时联系我们,以便尽可能多的扩展准备就绪以支持内容安全策略。
帕特里克:托拜亚斯,您还发布了适用于Joomla 3网站的System - HTTP Headers插件。Joomla 3插件实现了这些头信息,但没有CSP组件提供的管理和报告功能,对吗?
托拜亚斯:是的。如上所述,这是我们的起点,我们在此基础上构建了核心工具。这已经与核心更改保持同步,以保持与4.x版本的同步。
没有com_csp在Joomla 3.x中的两个主要原因。第一个是,为了使其正确,我们需要向文档API添加一些小功能。第二个原因是,核心现在也使用了大量内联JavaScript和CSS。在4.x中,核心在该领域取得了巨大进步,因此我们现在最终可以开始考虑对核心也实施严格的内容安全策略。
由于我的插件存在于3.x中,您没有理由不设置它支持的头信息,以启用现代浏览器保护,您也可以立即开始了解CSP。
帕特里克:太好了。感谢您抽出时间。我现在得走了,得为70个Joomla 3网站安装System - HTTP Headers插件。
资源和进一步阅读
理解内容安全策略还有很多内容,以下是一些资源列表,帮助您了解新功能的工作原理,以及配置您网站策略的其他资源。
Joomla 文档
- https://docs.joomla.org/J4.x:Http_Header_Management
- https://docs.joomla.org/Help4.x:Components_CSP_Reports
- https://docs.joomla.org/Help4.x:Components_CSP_Reports_Options
Joomla 3 系统HTTP头插件
- https://extensions.joomla.net.cn/extension/httpheader/
- https://github.com/zero-24/plg_system_httpheader
CSP 评估器
关于CSP的进一步阅读
- https://scotthelme.co.uk/content-security-policy-an-introduction/
- https://developers.google.com/web/fundamentals/security/csp
- https://csp.withgoogle.com/docs/index.html
- https://research.google/pubs/pub45542/
在Joomla社区杂志上发表的一些文章代表了作者对特定主题的个人意见或经验,可能并不与Joomla项目的官方立场一致。
通过接受,您将访问由 https://magazine.joomla.net.cn/ 之外的第三方提供的服务
评论