对我和我的团队来说nvisionative我们从来没有绑定过任何一个CMS。我一直说,我们的业务不依赖深度神经网络。我知道这可能会让DNN社区的一些人感到惊讶,但这是真的。我们不是强迫每个人使用一个工具集,而是专注于为我们的客户构建可靠的解决方案。为了做到这一点,我们保持开放的心态,使用正确的工具来完成工作。也就是说,当它有意义时,我们实际上会选择DNN。然而,有时我们在这个问题上没有选择,我们被迫使用客户授权的工具,或者从现有的客户实现继承来的工具。你瞧,有时候(比我们愿意承认的还要多)这些工具包括WordPress。
历史上
对于那些不知道的人来说,WordPress最初是作为一个个人发布系统(博客)而构建的,实际上是作为b2/cafelog的正式继承者而构建的。它选择的技术堆栈是PHP和MySQL,采用通用公共许可证(GPL),这使得它对大众非常有吸引力。多年来,它获得了极大的普及,并且已经发展成为一个内容管理系统(CMS),尽管许多人仍然在争论它是否应该被称为“CMS”。尽管如此,据W3Techs报道在美国,60%的网站使用WordPress, 30.9%的网站使用CMS。
选择
如果你和几乎任何一个WordPress营,他们会告诉你,“这很容易,它是免费的,有一个插件,你想做的任何事情!所以为什么不用它呢?”
对此事的关注
他们不会告诉你的,也许是他们不知道的。这就是可怕的部分,也是我们在处理WordPress实现时非常小心的原因。
本博客的目的并不是列出所有需要注意的事情(因为这个列表相当广泛)。然而,我们意识到你们中的许多人在DNN社区可能听说过,甚至使用过整个安全参数当评估DNN和WordPress时。当我们向客户或我们自己提出一个案例时,我们只是接受这个论点,把它留给概括吗?盲目地相信它?我不相信!因此,我将只公开一个安全漏洞,它应该足以帮助您做出明智的决定。
细节
在WordPress的最新版本中,有一个REST API。从表面上看,这是一件很棒的事情!它允许您通过插件构建快速的客户端特性来改善整体用户体验,这些插件可以通过API调用访问服务器端数据,而不必依赖较慢的PHP钩子进行服务器端数据访问。
你也可以使用REST API来集成第三方应用程序(例如,其他web应用程序,移动应用程序)来访问数据,如帖子,类别,标签,媒体等等。一些API操作需要身份验证。例如,创建、更新或删除帖子。Cookie身份验证是WordPress中唯一可用的本地身份验证机制,但是可以添加插件来提供其他身份验证方法,例如OAuth和JSON Web Tokens (JWT)。对于来自WordPress管理员、主题或插件之外的身份验证请求,需要一个身份验证插件。
但是,大多数GET(只读)请求都是匿名的。这使得访问大多数数据非常容易。因此,如果您只想查看数据,甚至不需要编写一行代码!
WordPress REST API使用如下格式作为端点(执行特定功能的URL方法):
https://example.com/wp-json/wp/v2/ < object_method >
这些端点旨在在代码上下文中使用。但是,要查看端点的响应信息而无需编写一行代码,您可以在任何现代web浏览器中访问URL并返回JSON响应。准备好迎接真正可怕的部分了吗?
可怕的细节
首先,我要说的是,并不是所有的WordPress网站都适用。这取决于WordPress的具体版本,以及是否采取了任何措施来解决这个漏洞,无论是通过自定义代码、插件还是内置的托管提供商机制。也就是说,WordPress 4.7的开箱即用实现将通过匿名访问公开所有用户的列表,包括每个用户的姓名、用户名、Gravatar链接和其他相关元数据!以下是一个来自著名科技新闻网站的例子。出于安全考虑,我对所有敏感数据进行了混淆处理。
人类和bot都可以公开和列举这些信息,以获取敏感信息。有了这些信息,就可以对网站进行暴力攻击,以获得未经授权的访问。人们想知道为什么这么多WordPress网站被黑了?
响应
WordPress REST API团队对此有何看法?好了,抓住你的屁股,开始了……
“用户名已经通过主题、RSS提要等暴露出来,我们不认为这是一个安全问题。如果您想限制对这些数据的访问,您可以安装第三方插件。”
(参考:https://github.com/WP-API/WP-API/issues/2961)
另一种选择
我们都知道DNN (DotNetNuke)多年来并没有受到安全漏洞的影响。然而,从第一天开始就在社区中,我仍然可以单手计算出大量安全漏洞的数量。这说明了一些问题!即使在那段时间里,这些漏洞也得到了及时而敏感的处理,并且没有像这个WordPress漏洞那样严重和明显(在撰写这篇博客的时候,这个漏洞还在他们的文档中)。
如果这种级别的安全漏洞(作为一个功能)可以像这样发布,那么您必须对每次更新都提出质疑,特别是在将来。现在,更严格的法规正在实施,比如GDPR,你的业务整体上比以往任何时候都更加脆弱。我知道一些CMS顾问甚至告诉客户,他们甚至不会接触WordPress网站,因为它给他们自己的公司带来了风险。
救赎之恩
现在,让我们假设你有一个或多个WordPress站点,正在阅读这篇博客,并且现在关心该怎么做。你已经投入了大量的资金使你的WordPress网站很好,但现在你担心它是脆弱的。坏消息是你应该担心了。好消息是我们也能帮你使用更安全的CMS(如DNN)或者,最坏的情况是,帮助保护你的WordPress网站。
底线
我希望有一个具体的例子可以帮助你为你自己、你的公司和你的客户做出可靠的决定。与liability-first在与安全第一!