近年来,我们目睹了向用户传递基于 Web 内容的技术设备数量的爆炸式增长。智能手机、平板电脑、智能手表等等——所有这些都具有不断进步的技术能力,并支持不断扩大的操作系统和 Web 浏览器列表——每年都以新的姿态涌入市场。
这种趋势与 Web 开发以及无头与传统内容管理系统 (CMS) 有什么关系?关系很大。
CMS 创建了互联网
CMS 是用于管理数字内容(如图像、视频、博客文章——基本上是您会在网站上发布的任何内容)的应用程序或计算机程序集。CMS 的一个明显例子是 WordPress。
“管理”一词在这里被广泛使用。它可以指在网站上创建、编辑或更新任何类型的数字内容,以及为网站建立索引以使其易于搜索。
因此,CMS 本质上将网站上显示的内容与内容的显示方式分离开来。它还允许您(网站管理员)设置谁可以访问、编辑、修改或以其他方式管理该内容的权限。
假设您想要发布新的博客条目、更新或更正旧帖子中的内容、在您的 Facebook 页面上撰写内容、分享视频或文章的社交媒体链接,或将视频、音乐文件或预先编写的文本集嵌入到您网站的页面中。如果您曾经做过类似的事情,那么您就已经使用了 CMS 功能。
传统 CMS 架构:优点和缺点
CMS 由两个主要组件组成:内容管理应用程序 (CMA) 和内容交付应用程序 (CDA)。CMA 涉及网站的前端部分。这允许作者或其他内容管理者在没有 Web 开发人员帮助的情况下编辑和创建内容。CDA 涉及网站的后端部分。通过组织和编译内容以使网站内容更新成为可能,它可以自动化网站管理员的功能。
传统上,这两个部分作为一个“耦合”的 CMS 架构连接成一个单元。耦合 CMS 使用内置于应用程序本身的特定前端交付系统 (CMA)。术语“耦合”源于前端框架——页面的模板和布局以及这些页面如何响应在某些浏览器中打开——与网站的内容耦合的事实。换句话说,在耦合的 CMS 架构中,内容管理应用程序 (CMA) 和内容交付应用程序 (CDA) 是不可分割地合并在一起的。
传统 CMS 的优势
耦合架构确实提供了优势,主要在于对于那些技术不精通的人来说,它具有简单性和易用性。这一事实解释了为什么像 WordPress 这样的平台(保留了传统的 CMS 设置)对于那些创建网站或博客的人来说 仍然如此受欢迎。
进一步简化 Web 开发过程的是 网站构建器应用程序,例如 Wix 和 Squarespace,它们允许您构建拖放式 网站。这些构建器中最受欢迎的构建器使用开源库,但它们本身是闭源的。这些站点几乎允许任何可以上网的人组装一个网站,而无需涉足相对较短的 CMS 环境的细枝末节。虽然构建器应用程序在开源社区的许多人中不久前还 成为嘲笑的对象——主要是因为它们倾向于给网站带来通用和预先包装的外观和感觉——但它们已经 变得越来越实用和多样化。
安全是一个问题
然而,对于除最简单的 Web 应用程序之外的所有应用程序,传统的 CMS 架构都会导致技术不灵活。使用传统 CMS 修改静态网站或 Web 应用程序需要花费大量时间和精力来生成更新、补丁和安装,从而使开发人员无法跟上不断增长的设备和浏览器数量。
此外,耦合的 CMS 有两个 内置的安全缺陷
风险 #1:由于内容管理和交付捆绑在一起,通过前端侵入您网站的黑客会自动获得对后端数据库的访问权限。数据及其呈现方式之间缺乏这种分离增加了数据被盗的可能性。根据您的网站服务器上存储的用户数据类型,大规模盗窃可能是灾难性的。
风险 #2:在没有用于向您的网站交付内容的单独系统的情况下,成功进行 分布式拒绝服务 (DDoS) 攻击的风险会增加。DDoS 攻击会用如此多的流量请求淹没内容交付网络,以至于它们不堪重负并离线。如果您的内容交付网络与您的实际 Web 服务器分离,攻击者将更难使您的站点瘫痪。
为了避免这些问题,开发人员引入了无头和解耦的 CMS。
比较无头和解耦的 CMS
CMS 的“头部”是内容交付应用程序的统称。因此,没有“头部”的 CMS——因此没有向用户交付内容的方式——被称为“无头”。
这种缺乏既定的交付方法使无头 CMS 具有巨大的通用性。由于没有 CDA,因此没有预先建立的交付方法,因此开发人员可以根据需要设计单独的框架。不断修补您的网站、Web 应用程序和其他代码以保证兼容性的问题消失了。
另一种选择是 解耦 CMS,它包含与无头 CMS 相同的许多特性和优点,但有一个关键的区别。无头 CMS 完全由开发人员决定如何向用户交付和呈现内容,而解耦 CMS 则提供预先建立的交付工具,开发人员可以选择使用或不使用。因此,解耦 CMS 既提供了传统 CMS 的简单性,又提供了无头 CMS 的通用性。
简而言之,解耦 CMS 有时被称为 混合 CMS ,因为它 是耦合和无头设计的混合体。解耦 CMS 并不是一个新概念。早在 2015 年,PHP 核心存储库开发人员 David Buchmann 就 呼吁开发人员 解耦他们的 CMS,以应对更广泛的挑战。
无头 CMS 的安全改进
关于无头与解耦内容管理架构,以及它们与传统架构的不同之处,也许最重要的观点是增加的安全优势。在无头和解耦设计中,内容和用户数据都位于受防火墙保护的单独后端系统中。用户无法访问内容管理应用程序本身。
然而,重要的是要记住,这种架构变化的主要后果是,由于 架构是碎片化的,开发人员必须填补空白并自行设计内容交付和呈现机制。这意味着,无论您选择使用无头还是解耦,您的开发人员都需要了解安全性。虽然分离内容管理和内容交付减少了黑客攻击的一个途径,但这本身并不是安全优势。责任将落在您的开发人员身上,以正确保护您生成的 CDA。
防火墙保护后端提供了 至关重要的安全层。无头和解耦架构可以将您的内容分发到多个数据库中,因此,如果您利用这种可能性,您可以进一步降低 成功进行 DDoS 攻击的可能性。开源无头 CMS 还可以受益于安装 Linux VPN 或 Linux 内核防火墙管理工具,如 iptables。所有这些选项结合在一起,为开发人员提供了创建任何类型的 CDA 或后端设置所需的额外安全性。
除了优势之外,请记住,无头 CMS 平台是一项相当新的技术。在切换到无头或解耦之前,请考虑您正在使用的主机是否可以支持您增加的安全性,以便您可以将您的应用程序托管在网络安全系统之后,以阻止未经授权的访问尝试。如果不能,则可能需要更换主机。在评估新主机时,还要考虑任何现有的合同或安全性和合规性限制(GDPR、CCPA 等),这些限制可能会导致迁移问题。
开源选项
如您所见,无头架构为设计人员提供了通用性和自由度,可以按照他们认为最佳的方式交付内容。这种自由精神自然符合软件设计中的开源范例,在开源范例中,所有源代码都可供公众查看,并且任何人都可以出于任何原因获取和修改它。
有许多开源无头 CMS 平台允许开发人员这样做: Mura、 dotCMS 和 Cockpit CMS 仅举几例。要更深入地了解开源无头 CMS 平台的世界,请 查看这篇文章。
最后的想法
对于 Web 设计师和开发人员来说,无头 CMS 的概念标志着对网站构建和交付方式的重大反思。转向这种架构是使您的网站面向未来以应对不断变化的偏好以及未来黑客可能想出的任何花招的好方法,同时无论使用何种设备或浏览器,都可以创建无缝的用户体验。您还可以查看本指南,了解有关以与无头和解耦架构相匹配的方式设计网站的 UX 技巧。
评论已关闭。