42分钟阅读时间 (8447 字)

Joomla 4 新 HTTP 标头插件

HTTPHeaders

继上个月关于安全、密码和 Joomla WebAuthn 插件的文章之后,这个月我们将探讨另一个与 J4 一起推出的 Joomla 安全功能。那就是 HTTP 标头插件,它现在已成为 Joomla 核心功能的一部分。

互联网不断发展,Joomla 也始终紧跟其后。这就是我选择它作为我的首选网页开发平台的原因。无论您的网站是一个小型家庭企业网站,还是一个销售额达数百万的全功能电子商务平台,Joomla 框架都有适合每个人的东西,并且始终在考虑实施新技术。其中一些甚至具有革命性。

在 Joomla 4 核心中引入 HTTP 标头插件是帮助保护您的网站免受攻击和恶意活动的一大步。

这个系统安全插件帮助网站所有者轻松配置 Joomla 熟悉的后端中的 HTTP 安全标头,而无需在 htaccess 文件或其他配置文件中翻找,或者更糟糕的是,您的网络托管 Cpanel。

看看在 Cpanel 中设置这个有多么复杂,[点击这里](https://support.cpanel.net/hc/en-us/articles/1500001533562-How-to-add-nosniif-CORS-HSTS-Clickjack-and-X-Xss-Protection-headers-on-a-per-domain-basis) 并告诉我您不会犯错!而且,这些都假设一旦框架安装在 Apache 中并创建了目录,您就知道如何添加您想要集成的 HTTP 标头。

您尝试了多少次实施 htaccess 命令,然后重新加载您的网站,却遇到了 http500 错误?

最大的问题在于,如果您没有将您的 HTTP 标头格式正确,您的网站就会出问题。

即便如此,对某个网站有效的东西可能对另一个网站不一定有效。一个很好的例子就是我的 htaccess 文件和我将浏览器设置为加载我的网站的 non www https 版本的方式。

 

##www 到 non www 和 http 到 https 混合

RewriteCond %{HTTPS} off [OR]

RewriteCond %{HTTP_HOST} ^www\. [NC] 

RewriteRule ^ https://mywebsite.co.uk%{REQUEST_URI} [R=301,L,NE] 

##End www to non www and http to https mixin

 

这对于我之前的主机公司来说效果非常好。但是当我切换到不同的主机后,它就不再工作了。真是让人困惑!

我现在要使用以下htaccess代码来达到相同的效果

 

##www 到 non www 和 http 到 https 混合

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]

RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

RewriteCond %{ENV:HTTPS} !on

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

##End www to non www and http to https mixin

 

是不是很困惑?而且,如果你在格式上犯了一个错误,嘭!你的网站就坏了!至少在你修复代码之前是这样。

这就是为什么将事情保持简单,作为 Joomla 核心的一个部分,意味着更少的挫败感,更少的时间浪费在谷歌搜索你的错误上,你可以在椅子上坐着,欣赏你的新网站,并且有更多的时间庆祝。

所以,让我们来看看 HTTP头部 实际上是什么,你可以在哪里找到插件,以及你可以用它们做什么。不过,这里要提一下,这个Joomla功能是Joomla的高级功能,更适合数据敏感的网站,而不是你用心创建的关于你可爱小猫的新网站。然而,话虽如此,即使是简单的网站也应该尽可能安全,以防止在黑客攻击你的网站后执行恶意代码。

 

什么是HTTP头部?

HTTP头部不要与你的HTML文档的 <head> 部分混淆。它们是完全不同的。HTTP头部是您的网络服务器和浏览器之间的序言。一组指令告诉浏览器向访客显示什么,或者更重要的是,不显示什么。

你可以在浏览器中的开发者工具中看到HTTP头部以及它们如何与个别HTML对象相关。在Google Chrome中,打开开发者工具,然后网络标签。现在刷新网页,然后在左侧窗格中点击一个HTML项。它将在右侧窗格中显示该对象的HTTP头部。

在下面的图片中,你可以看到高亮显示的图片返回了一个200的HTTP状态,这意味着浏览器找到了它。还有一系列与该对象相关联的其他信息,例如文件大小和编辑日期。

 

Joomla http headers 1

 

如果你的某个HTML项未能显示,你可能在HTTP头部中找到关于原因的线索。在这个例子中,第二张图片未能显示,并且你可以从右侧窗格中显示的信息中看到没有HTTP头部信息。

除了这个神秘的提示

引用策略:'strict-origin-when-cross-origin'

'strict-origin-when-cross-origin' 简单来说就是,当一个HTML项(在这种情况下是图片)从一个不同的源(不是你的服务器)提供时,那么当时设置的HTTP头部策略必须遵循。在这个例子中,Joomla插件中设置的HTTP头部将拒绝所有不是来自这个网站或专门在Joomla HTTP头部插件中'包含'在HTTP头部参数设置中的不同网站的图片。

所以,当从HTML文档中调用图片时,浏览器会拒绝它,并且它不会被加载。

 

Joomla http headers 2

 

这与找不到并返回404未找到HTTP错误消息不同。在这种情况下,图片仍在托管它的服务器上寻找,但浏览器没有找到它。

 

Joomla http headers 3

 

好的。那么Joomla HTTP头部插件究竟做了什么?

除了告诉浏览器显示什么以及返回有关HTML文档的一般信息外,HTTP头部有助于减轻您可能在Joomla网站上遇到的攻击和安全漏洞。这就是Joomla HTTP头部插件发挥作用的地方。它通过根据Joomla HTTP头部插件中的设置明确显示HTML内容来实现这一点。

通过使用HTTP头部插件向你的Joomla网站添加基于HTTP的安全头部,你将为你的Joomla网站提供另一层安全。

这非常重要,因为默认情况下,一个HTML网页会向您的访客展示所有内容,不论好坏。除非网页的HTTP头信息明确指示不显示,否则都是如此。该插件通过允许您配置网站内容安全策略(Content-Security-Policy)中可用的高级安全选项来做到这一点。根据您的需求,该插件可以为每个网站配置不同的设置,因此它是在您对抗黑客时的真正灵活武器。

 

为什么我需要这个插件?

在理想的世界里,您可能不需要。然而,在我们所处的世界中,有太多不择手段的人试图寻找从无辜和轻信的人那里谋取利益的方法。在我们这里,我们把这些人称为黑客。黑客会不择手段地利用软件中的漏洞来获取经济利益,这通常会给网站所有者带来损害。

通过使用Joomla的HTTP头插件来控制向您的访客提供的内容,您可以减少黑客通过过时的漏洞插件向您的访客提供恶意网站内容的可能性。这有助于阻止您网站上恶意脚本的注入。

那么,让我们稍微考虑一下这个假设的情况。

您有一个漂亮的Joomla 3网站。它是在5年前制作的,看起来和功能仍然完美。所有的组件、插件和模块都保持最新。完美,对吧?

然而,并不完全是这样,因为当您5年前制作网站时,您安装了流行的Foo Bar插件,在您的首页上打印“FOO BAR”。一开始看起来很酷,但后来您改变了主意,并从首页文章中删除了插件{foo}FOO - BAR{/bar}的短代码。

但问题是:您并没有取消发布或卸载该插件本身,其使用已经从您的记忆中消失。 我相信我们都有这样的过失。

快进到今天,5年后,该插件仍然存在,在您的网站上已发布并处于活动状态,但已有5年未更新,因为您已经很久以前就忘记了该插件,或者作者停止了支持它。现在,某个恶意的家伙意识到这个插件存在一个可以被利用来对您的网站进行跨站脚本(XSS)攻击的安全漏洞,并使您的无辜访客成为受害者。

跨站脚本,也称为XSS,是您网站中的一个安全漏洞,它允许攻击者破坏您的用户与现在容易受到攻击的网站之间的交互。

攻击者/黑客使用XSS来利用您脆弱的网站向您的用户发送恶意脚本。因为脚本来自您的网站,用户的浏览器不知道或怀疑脚本不应该被信任,因此在网页加载和打开时执行脚本。

以这种方式运行的恶意脚本可能给您的用户带来许多问题,从窃取存储在cookies中的登录密码和用户名数据,到将您的用户发送到假冒的钓鱼网站。脚本甚至可以更改您网站所提供的网页的外观,并显示不同的广告。

使用 Joomla的HTTP头插件 有助于通过确保实际上只向您的访客提供您想要提供的服务器脚本和内容来阻止跨站脚本。其他一切都被阻止。

因此,在上面的例子中,您可以为HTTP头插件配置,只从指定的文件夹或可能是一个CDN(如果您使用的话)提供您的网站JavaScript(脚本)文件,以阻止攻击。

您还可以阻止网站运行HTML中嵌入的行内JavaScript。但请注意,根据您如何设计网站HTML,这可能会在以后造成问题。

这将有助于阻止恶意JavaScript代码在您的网站上执行。即使您的脆弱的Foo Bar插件是黑客最初能够向您的网站注入恶意代码的原因。

注意

容易受到XSS攻击的网站常见弱点是用户输入表单(用户登录页面、订阅通讯表单、联系我们表单等)没有验证和加密。

 

HTTP头插件在哪里?

您可以在Joomla的插件列表中找到HTTP头插件,以及其他所有Joomla插件,并且它访问的方式与您已经习惯的方式完全相同。

 

Joomla http headers 4

 

使用HTTP头插件

使用Joomla的HTTP插件相对简单,尽管在更改默认设置之前,了解一些与其使用相关的特殊术语可能是个好主意。尽管如此,其中一些您可能已经熟悉。

例如

当处理图像时,您会看到“img-src”这个术语,其中“img”指的是图像,“src”指的是图像的有效源。这些术语我们已经从基本的HTML中熟悉了。

在本文的末尾,有一个包含有助于您使用此Joomla插件的额外信息的网站列表。


HTTP头插件设置 - 选项卡1

当您打开插件时,第一个打开的选项卡是插件的基本设置。在这里,您可以调整X-Frame选项、引用策略、跨源打开策略,以及强制HTTP头。还有一些链接,可以提供更多信息,帮助您更详细地了解这些项的功能。

让我们逐一查看这些内容。

 

http headers 5a

 

X-Frame选项

第一个设置是X-Frame选项,默认情况下是启用的。

此选项允许您决定您的网站内容是否可以在其他网站中使用、