阅读时间16分钟 (3199个单词)

Joomla 4中WebAuthn API的深入探讨

WebAuthn-Passwordless-Login

你注意到新版的Joomla 4登录界面中有一个新的Web身份验证按钮了吗?

它的存在是因为Joomla的新WebAuthn API允许使用FIDO认证密钥进行安全登录。那么,让我们深入了解密码、安全和WebAuthn,并找出如何在Joomla 4的用户账户中激活它。

如果你已经检查了Joomla 4,那么你已经知道管理区域已经进行了改进,其中包括用户和管理员登录界面。但是,你是否注意到它取决于你连接的是使用https还是http的网站而有所不同?

joomla webauthn http login

不安全的http登录界面

joomla webauthn https login

安全的https登录界面

如果你通过https安全连接,那么Joomla的新Web身份验证按钮就会可见。这个按钮是Joomla的全新WebAuthn功能的一部分,它允许你使用WebAuthn(FIDO2)密钥安全登录,而不是使用密码。

密码是每个人的噩梦。

随着技术与每个人生活的日益紧密相连,你的密码列表永远在增长。如果你遵循一般密码建议,即不使用容易被猜到的密码,不将其写下而是记住它,并使用字母、数字和特殊字符的组合,那么你面前有一项艰巨的任务。

你知道吗?

“123456”是世界上使用最多的密码!

 

为了娱乐,这里有一份来自Nordpass的2021年全球十大常用密码列表。该列表还显示了在2021年,这些密码在定向暴力攻击中被破解所需的时间,以及它们的频繁使用情况。

 

  1. 123456 - 破解时间不到一秒,使用次数超过1.03亿次
  2. 123456789 - 破解时间不到一秒,使用次数超过4600万次
  3. 12345 - 破解时间不到一秒,使用次数超过3200万次
  4. qwerty - 破解时间不到一秒,使用次数超过2200万次
  5. password - 破解时间不到一秒,使用次数超过2000万次
  6. 12345678 - 破解时间少于1秒,使用次数超过1400万次
  7. 111111 - 破解时间少于1秒,使用次数超过1300万次
  8. 123123 - 破解时间少于1秒,使用次数超过1000万次
  9. 1234567890 - 破解时间少于1秒,使用次数超过960万次
  10. 1234567 - 破解时间少于1秒,使用次数超过930万次

你是否因为使用弱密码而犯了罪?你的密码是否在这份名单上?

 

良好的密码习惯就像任何好的习惯一样。说起来容易,做起来难!

 

更多的账户和更多的应用程序需要更多的密码,这反过来又为盗窃和数据泄露创造了更多的机会。因此,需要更安全的登录流程至关重要。这是GoDaddy、T-Mobile和DailyQuiz希望他们曾经拥有的东西,因为他们在2021年都遭受了大规模的数据泄露。

不要认为这不会发生在你身上。你不需要运营一个跨国企业集团,即使你的小型家庭企业网站也可能遭到攻击,并被用作垃圾邮件和钓鱼攻击的载体。不要让弱密码使你的Joomla网站成为黑客的易攻击目标。

当然,易于记忆的密码虽然本质上是弱的,但使用起来很吸引人。更安全的密码是明智的选择,但它们难以记忆,我们需要帮助。

多年来,我们看到了针对这个问题的不同解决方案,但每个方案都有优点和缺点。以下两种更常见的解决方案有助于保护您的密码,从而保护您对账户的访问,包括密码管理和双因素认证。

密码管理器

密码管理器有免费和付费版本,它们的工作方式类似。

密码管理器需要安装在您的电脑、手机或平板电脑上,并用于存储您的密码。大多数使用256位加密来完成这项工作。您使用“主密码”登录密码管理器,它将记住或为您所有的在线账户生成安全的密码。同时自动登录这些账户。

然而,也有一些缺点。最显著的是:您正在将数据托付给第三方。如果您丢失主密码,您将失去对所有账户的访问权限。主密码不能免于键盘记录器和钓鱼攻击。

双因素认证(2FA)

双因素认证已经存在了一段时间。实际上,Joomla是第一个在2013年11月版本3.2.0发布时实施这种方式的CMS。这是一种在登录过程中增加另一层安全性的方法。因此,您不仅需要用户名和密码,还需要一个一次性生成的密钥。这些密钥由谷歌认证器等外部服务生成,然后发送到您的手机。您可以将它手动输入到Joomla登录界面。

与使用密码管理器一样,也存在一些关于安全和访问网站管理区域的问题。虽然比使用密码管理器少,但这是因为键盘记录器和钓鱼攻击的方面已被排除在外,因为为双因素认证生成的代码是单次使用的。

尽管您仍然需要记住密码并保密,但即使有人获得了您的密码和用户名,没有“额外密钥”的人仍然无法访问您的账户。

双因素认证的主要问题始于登录所需的时间增加,这增加了犯错误的机会。您可能无法访问您选择使用的认证服务。或者,您可能无法访问您用于访问该认证服务的设备。另一个问题可能是预先生成的紧急访问代码,然后打印出来供未来潜在使用。如果有人在您的桌子上翻找时发现了这些代码,他们可能会使用这些代码来访问您的账户。

现在有一个第三种方法

WebAuthn & FIDO2

我们现在在Joomla中有一个新的登录选项:WebAuthn。

WebAuthn是一种新兴的互联网技术,虽然已经存在一段时间了,但现在越来越多的网站和应用开始提供这种安全的登录方式。

WebAuthn,或称为Web身份验证API,是由万维网联盟(W3C)和FIDO(一个国际社区)共同发起的项目。社区成员包括会员组织、全职员工以及共同致力于制定网络标准的公众。其中,微软、苹果、Yubico和谷歌等互联网领域的巨头都在支持它。

WebAuthn API允许网站使用公钥/私钥对加密技术注册和验证用户,而不是使用密码。

WebAuthn API使得利用设备内构建的强大验证器变得简单,例如Windows Hello或苹果的Touch ID。

WebAuthn通过在用户设备或应用程序中安全存储私钥(在这种情况下是您的FIDO2密钥),然后在服务器/网站/应用程序中存储随机生成的公钥来实现。当您使用FIDO2 WebAuthn密钥登录时,服务器将使用该公钥来证明您的身份,通过将其与存储在您的密钥上的公钥进行匹配。

 

webauthn

 

由于存储在服务器上的公钥没有私钥是无用的,这意味着数据库的内容对黑客来说不那么有吸引力。这是一个额外的优点。

WebAuthn有多种形式:指纹扫描仪、密钥和手机都是常见的FIDO设备。

因此,让我们来看看如何设置您的Joomla 4用户账户以与WebAuthn FIDO2认证密钥一起使用。

使用FIDO2 WebAuthn密钥登录Joomla

您首先需要做的是获取一个FIDO2认证密钥。我在亚马逊上只花了15英镑就买了一个基本的USB密钥。它是Thetis制造的,但还有其他的选择。Yubico有更广泛的产品线,也涵盖了不同的WebAuthn协议,如FIDO2、U2F、智能卡、OTP、OpenPGP 3。密钥也有不同的接口可供选择;USB-A、USB-C、NFC和Lightning。因此,您需要做些研究,选择适合您应用方案的产品。

thetis webauthn key

 

打开您的浏览器,转到您的Joomla登录界面。或者,如果您有访问Joomla管理区域的权限,请访问https://your-website.com/administrator(如果您隐藏了管理登录URL,请使用该地址代替)

使用您的用户名和密码正常登录。登录后,点击屏幕右上角的“用户菜单”按钮。然后,在下拉菜单中点击“编辑账户”。

joomla webauthn 1
joomla webauthn 2

在下一屏幕上,如果您通过https登录,您将看到一个标签页,上面标有“WC3 Web身份验证(WebAuthn)登录”。请继续打开该标签页。

要添加您的FIDO2密钥,请点击“添加新验证器”按钮。随后会弹出一个窗口,提示您插入密钥并触摸它。因此,请将您的密钥插入USB/Lightning插槽并触摸它。或者,像我的Thetis密钥一样,按下按钮。请确保查看随密钥附带的说明,因为这个过程可能不同,或者您可能需要先在密钥制造商处注册账户。我不需要这样做,但您可能需要,具体取决于您拥有的FIDO2密钥类型。

joomla webauthn 3

等待几秒钟,让您的密钥、浏览器、网站和服务器同步用于登录的加密私钥/公钥。随后出现的屏幕将通知您已为您账户注册了新的密钥。目前该密钥将有一个通用的名称。因此,让我们将其更改为更个性化的名称。

joomla webauthn 6

点击蓝色“编辑名称”按钮,在字段中输入新的密钥名称,然后保存。

joomla webauthn 7a

这就是全部了。您现在已经设置好了用户账户以配合您的新密钥使用。现在是时候测试一下了,所以请完全退出,返回登录页面,将您的密钥插入USB/Lightning端口,输入您的用户名并点击“Web身份验证”按钮。

joomla webauthn 8

如果一切顺利,您现在已成功登录到Joomla的用户账户。

joomla webauthn 9

 

一些疑问和建议

如果您已经阅读到这里,而且您与我们的想法类似,您可能已经对在Joomla 4中使用这个新的API有一些疑问。虽然WebAuthn和FIDO2密钥是安全的,但没有任何系统是完美的。总会存在一些情况和规则例外。以下是我研究这篇文章时关于Joomla新WebAuthn登录API的一些疑问。其中一些有答案,还有一些我仍在思考!

管理员能否从我的账户中移除我的密钥?

不,Joomla的管理员不能代表用户添加或移除认证器。用户必须登录并设置自己的设备。

需要将密钥注册给密钥制造商吗?

我的Thetis密钥在使用前不需要我向他们注册密钥,但其他密钥可能有不同的流程。

我的私钥安全吗?

是的,密钥对是在FIDO2设备上生成的,这通常是USB安全密钥。私钥安全地绑定到设备上。

我的密码仍然有效吗?

是的,我认为这是Joomla需要进一步思考的问题之一,以充分利用使用FIDO2 WebAuthn密钥的安全性优势。

虽然将密码链接到您的用户账户在您失去密钥访问权时可能很有用,但这仍然代表黑客访问您账户的机会。尽管如果您在登录时停止使用密码,键盘记录器和欺骗性钓鱼网站将无法窃取您的登录数据。但暴力破解攻击仍然可能有效。

目前,解决这个问题的方法是在您将密钥添加到Joomla之后创建一个新密码。一个几乎无法破解且难以记住的密码。所以请记下来,不要复制/粘贴(键盘记录器无法读取您的手写笔记。你知道吗,连微软Windows 10和11都内置了键盘记录器?)。Akeeba的Nicholas建议使用128个字符的密码,使暴力破解攻击几乎无法成功访问您的账户。

如果您是Joomla网站的超级用户,提高用户的标准密码要求可能是有意义的,使其更加安全。将所需密码长度从12个字符增加到至少20个字符,并包括数字、特殊字符和大写字母。您可以在“用户”>“选项”>“密码选项”中找到这些选项。

如果我丢失了我的密钥会发生什么?

您将无法使用它安全地登录到您的Joomla用户账户。您将不得不使用您在将FIDO密钥注册到Joomla账户后创建的新长安全密码。如果发生这种情况,不要忘记创建一个新的超级强大密码来替换您刚刚使用的密码,就像上次一样记下来。

丢失的WebAuthn FIDO2密钥不会造成安全风险。密钥设计成对公开在线服务是匿名的,并且密钥本身不存储有关您身份或账户的信息。

如果我的密钥弄湿了会发生什么?

如果您的密钥放在可能弄湿的口袋里,或者您不小心掉进了水坑里,这可能是一个需要认真考虑的问题。我找不到关于我的Thetis密钥的信息,但Yubico密钥表示它们被评为IP68,这意味着它们可以抵御灰尘,在1.5米深的水下浸泡一小时。

我能否用一个密钥登录多个网站?

是的,但具体数量因制造商而异。这取决于密钥中使用的内存量。

我应该使用更安全的用户名吗?

是的。总是建议您使那些不择手段的人更难访问您的账户是个好主意。使用john2!4*6smith代替johnsmith会更好。如果您使用一个强大的用户名,这将使其他人更难恶意使用您的密钥。

我应该有一个备份密钥吗?

这并不是一个坏主意。尽管密钥没有电池或移动部件,可能有IP68防水等级,且防压碎,但它们仍然可能停止工作、丢失或损坏。

我可以在一个Joomla用户账户上有两个密钥吗?

是的,您可以为您的Joomla用户账户注册多个密钥。因此,拥有一个备份是有意义的。

我的密钥可以被克隆或复制吗?

FIDO2密钥是安全的,因此按照设计不能被复制。如果它们不能被复制,那么克隆也不会有问题。

登录后,我需要在USB/Lightning端口中留下我的FIDO2密钥吗?

不需要,一旦您登录,就没有必要将您的密钥插入USB/Lightning端口。

我可以在Linux上使用我的FIDO2密钥吗?

是的,也可以不是。一些较新的Linux版本已经内置了对安全密钥的支持。许多较旧的版本则没有,您可能需要稍作系统配置更改才能使您的密钥工作。谷歌将是您的朋友!

哪些浏览器支持我的FIDO密钥?

事物正在迅速改善。当原始Joomla文档为这个功能编写时,支持还不是很好。

但是,截至2022年3月,桌面浏览器的支持要好得多,所有的主要参与者都在其中。尽管移动浏览器仍然落后,除了Firefox。

浏览器 操作系统 支持
Edge Windows FIDO2
Chrome (Windows / Mac / Linux) FIDO2 & U2F
Firefox (Windows / Mac / Linux) FIDO2 & U2F
Opera (Windows / Mac / Linux) FIDO2 & U2F
Safari MacOS FIDO2 & U2F

  

以下是来自caniuse.com的WebAuthn和Fido的用法统计数据。

WebAuthn

https://caniuse.cn/?search=webauthn

caniuse webauthn

 

FIDO

https://caniuse.cn/?search=fido

caniuse fido

关于GDPR怎么办?

由于FIDO密钥只存储加密配对的私钥/公钥,没有其他信息,它们不会与任何FIDO服务或它们注册的计算机共享任何可识别的个人身份信息。因此,它们符合GDPR。

除了登录我的Joomla账户,我还可以用我的WebAuthn FIDO2密钥做什么?

有数以千计的网站使用这种类型的安全登录系统。Joomla当然是最好的。以下是一些来自Yubico的网站和应用程序列表,它们支持WebAuthn FIDO2协议。

云单点登录

安全登录数百万个网站和应用。

密码管理器

保护和管理您在互联网上的密码。

电子邮件

保护您的收件箱中的个人和敏感数据。

社交媒体

通过保护您的社交资料来保护您的声誉。

游戏

保持您的辛苦赚取的装备和声誉在合适的手中。

开发者工具

保护您的代码和知识产权免受黑客攻击。

云存储

在互联网上保密地存储图片和其他敏感文件。

加密货币

在交易所存储您的加密货币最安全的方式。

计算机访问

防止未经授权访问您的离线计算机。

 

您甚至可以使用您的WebAuthn FIDO2密钥来访问您的Tesla账户!

 

结论

与任何新兴或发展中的技术一样,在谷歌上有很多相互矛盾的建议。其中许多现在已经过时,不再重要。如果您想安全地登录到您的网站和应用,请花时间找到最新的信息,至少就兼容性而言。

我认为任何有助于保护您在线活动安全的技术进步都是一项福利。尤其是当我们如此无能地使用强密码来保护自己时。这让我想起了当我向客户移交他们新网站登录信息时他们脸上的表情。就在这时,他们意识到不能使用‘fred123’作为密码!

就我个人而言,我总是使用强大而难以记忆的密码,但我相信我是少数。因此,这个允许安全登录Joomla账户的新功能真是太棒了。任何消除网络钓鱼、键盘记录以及减少暴力破解攻击的因素对我来说都是酷的。只是不要丢失你的密钥!

从开发者的角度来看,在你将网站转交给客户时,最好预先将几个已注册到Joomla网站的FIDO2密钥包括在内。如果你那样做了,甚至不需要移交密码。尽管他们如果需要的话,仍然可以通过Joomla的密码找回功能自行生成一个。

现在WebAuthn API已包含在Joomla的核心功能中,我肯定会将其作为登录我所有Joomla 4网站以及客户网站的选项。将不再需要在几个硬盘驱动器上寻找一个早已遗忘的密码的最新版本。

最后,衷心感谢Akeeba的Nicholas就这个新的Joomla特性提供的见解和信息。

 

Webauthn图标的图标来自www.flaticon.com


本文的德语翻译:https://www.jug-zueri.ch/artikel/eintauchen-in-die-webauthn-api-von-joomla-4

发表在Joomla社区杂志上的某些文章代表作者对特定主题的个人意见或经验,可能并不与Joomla项目的官方立场一致。

0
四月号
遇见一位Joomler - Sigrid Gramlinger
 

评论 1

已经注册? 登录这里
Nicholas K. Dionysopoulos on Friday, 22 April 2022 13:11
优秀文章,只有几点小意见

这是一篇优秀的文章,不过作为向 Joomla 贡献此代码的开发者,我还有一些小的观点要提出

您不一定需要一个 FIDO2 密钥。FIDO 密钥(也称为安全密钥或 U2F 密钥)仍然受到支持。FIDO2 密钥更好,因为它们支持更安全的算法。如果您有一个旧的 FIDO 兼容的硬件身份验证器,它仍然可以使用 WebAuthn 工作。

用户名不是认证因素,它必须始终被视为公开信息。这就是为什么使用用户名和密码进行登录被称为单因素认证:唯一的认证因素是密码。将用户名视为秘密是古代遗留下来的做法,在双因素认证和 WebAuthn 之前。

您说 Linux 可能支持不好。虽然这在十年前 FIDO 刚起步时是正确的,但现在不再是这样了。如果您使用任何受支持的 Linux 发行版(即过去 5 到 8 年发布的 Linux 发行版),FIDO/FIDO2 密钥将得到完全支持,无需修改您的 udev 规则。由于大多数人会使用 Ubuntu 或 RedHat 的衍生版本,请放心,从 2016 年开始发布的所有产品都很好地支持 FIDO 和 FIDO2 密钥。

最后,也是最重要的,WebAuthn 不需要您拥有单独的硬件身份验证器。它可以与任何 FIDO2 身份验证器一起工作,包括您设备内置的身份验证器!我们与 Joomla 一起发布的代码可以在 Mac、iPhone 和 iPad 上使用 TouchID 和 FaceID。它也可以在支持现代 Android 版本的 Google Chrome 上使用 Android 指纹认证(如果我记得正确,是 Android 9 及更高版本)。它目前还不能与 Windows Hello 一起使用,我需要在代码中做出一些小的改动来实现这一点。

0
这是一篇优秀的文章,不过作为向 Joomla 贡献此代码的开发者,我还有一些小的观点要提出 :) 您不一定需要一个 FIDO2 密钥。FIDO 密钥(也称为安全密钥或 U2F 密钥)仍然受到支持。FIDO2 密钥更好,因为它们支持更安全的算法。如果您有一个旧的 FIDO 兼容的硬件身份验证器,它仍然可以使用 WebAuthn 工作。用户名不是认证因素,它必须始终被视为公开信息。这就是为什么使用用户名和密码进行登录被称为单因素认证:唯一的认证因素是密码。将用户名视为秘密是古代遗留下来的做法,在双因素认证和 WebAuthn 之前。您说 Linux 可能支持不好。虽然这在十年前 FIDO 刚起步时是正确的,但现在不再是这样了。如果您使用任何受支持的 Linux 发行版(即过去 5 到 8 年发布的 Linux 发行版),FIDO/FIDO2 密钥将得到完全支持,无需修改您的 udev 规则。由于大多数人会使用 Ubuntu 或 RedHat 的衍生版本,请放心,从 2016 年开始发布的所有产品都很好地支持 FIDO 和 FIDO2 密钥。最后,也是最重要的,WebAuthn [b]不需要您拥有单独的硬件身份验证器[/b]。它可以与任何 FIDO2 身份验证器一起工作,包括您设备内置的身份验证器!我们与 Joomla 一起发布的代码可以在 Mac、iPhone 和 iPad 上使用 TouchID 和 FaceID。它也可以在支持现代 Android 版本的 Google Chrome 上使用 Android 指纹认证(如果我记得正确,是 Android 9 及更高版本)。它目前还不能与 Windows Hello 一起使用,我需要在代码中做出一些小的改动来实现这一点。

通过接受,您将访问由 https://magazine.joomla.net.cn/ 外部第三方提供的服务