跳转到主要内容

管理插件的安全性

WordPress 插件中代码的安全性受到非常重视

警告:如果您发现存在安全问题的插件,请阅读报告插件安全问题

当 WordPress 安全团队验证插件漏洞时,他们会联系插件作者并指导他们如何修复和发布插件的安全版本。如果插件作者没有做出回应或者漏洞严重,插件/主题将从公共目录中提取,在某些情况下,由安全团队直接修复和更新。

解决安全问题

当您收到插件安全问题的报告时,可能会很可怕。首先,不要惊慌。每个人都会犯错误。最重要的是安全、及时地修复它。

  1. 确保您理解该报告。如果您不确定这意味着什么,请询问详细信息。即使是第三方记者通常也愿意花时间解释问题所在并指导您研究正确的解决方案。
  2. 让您的更改尽可能小。这将使您以后复习起来更加容易。
  3. 测试你的插件。确保安全修复不会破坏任何其他内容。确保升级不会导致奇怪的错误。继续WP_DEBUG并记录任何错误。
  4. 在更改日志中记录问题。您不需要详细说明所发生的情况,但要记录安全问题已解决。
  5. 在你的自述文件中注明记者的身份。这很好,让人们以后更愿意免费帮助你。
  6. 修改你的版本号。我们推荐SemVer,因此插件版本 3.9 的安全版本会将版本更改为 3.9.1 等等。

自动插件安全更新

自 WordPress 3.7 起,我们能够推送 插件的自动安全更新,以修复插件中的关键漏洞。许多网站都使用了插件自动更新功能,要么通过过滤器直接选择加入,要么使用 WordPress 可用的众多远程管理服务之一。

在极端情况下,插件审核团队和 WordPress 安全团队可能会确定插件问题严重到必须为所有用户进行更新。这种情况极为罕见,因为发生冲突的可能性很高。

 

批准自动更新插件并将其推广给 WordPress 用户的过程是高度手动的。安全团队审查版本中的所有代码更改,验证问题和修复,并确认插件可以安全地触发更新。推出自动更新需要修改和部署 API 代码。这与核心安全版本的标准和流程相同。

标准

我们当前考虑的安全推送标准是一个简单的列表:

  1. 安全团队是否已意识到该问题?
  2. 问题有多严重?它会对WordPress 安装的安全性以及更大的互联网产生什么影响?
  3. 该问题的修复是独立的还是添加了大量额外的多余代码?
  4. 如果插件的多个分支受到影响,是否已准备好每个分支的版本?
  5. 更新可以安全地自动安装吗?

这些要求的定义方式使得任何人都应该能够勾选每个框。

第一个标准——让安全团队意识到这个问题——至关重要。由于这是一个严格控制的过程,因此需要尽早通知WordPress安全团队。让我们知道就像通过电子邮件向我们发送plugins@wordpress.org详细信息一样简单。

插件和安全团队将与插件作者(以及报告者,如果不同)合作研究漏洞及其确切暴露情况,验证建议的修复方案,并确定将发布哪些版本以及何时发布。

 

常问问题

如何请求自动更新我的插件?

如果您觉得您的插件有足够大的用户群或者问题非常重要,请在推送代码plugin@wordpress.org 之前发送电子邮件。在电子邮件中包含供审核的更改补丁,并解释为什么您认为这应该自动化。

除了与安全相关的更改之外,我还可以包含自动更新的更改吗?

除了少数例外,没有。安全推送应该 与安全相关。我们更喜欢(并且很多时候需要)仅修复安全问题的插件版本,只需最少的代码更改,并且没有不相关的更改。

这使得每个人都可以快速查看更改并对其更加有信心。这也意味着用户受到的干扰最小。

为什么插件 A 会自动更新,而插件 B 却没有?

这不是 WordPress.org 的偏见,这只是我们一直使用的手动流程的倒退。如果我们收到有关问题的警报,我们将尽力处理。如果我们几天后发现,推出修复程序的机会窗口通常已经过去,并且不会那么有效。

如何禁用自动更新?

有多个选项可以禁用此功能。禁用核心自动更新的文章 适用于此处。任何禁用所有自动更新功能的操作都会阻止插件更新。如果您只想禁用插件更新,无论是所有插件还是单个插件,您都可以通过单个过滤器调用来实现。

如果我无法(或不想)修复我的代码怎么办?

你不必这样做。您的插件将保持关闭状态,2 或 3 个月后,插件页面将报告它因安全问题而关闭。如果您想推送修复但保持插件关闭,我们也可以这样做。只需回复电子邮件并与我们联系即可。

我只需修复报告的问题吗?

是和不是。您 确实 必须修复报告的问题,但是当您完成后, 整个插件将被重新审查,如果发现更多问题,您也将需要修复这些问题。最终目标是确保重新打开的插件是安全的。

如果我遇到指导方针问题怎么办?

当人们违反其他准则(例如包含自己的 jQuery 副本或进行未记录的外部服务调用)时,就会出现这种情况。这取决于其他问题的严重性。如果它只是您自己的 jQuery,我们可能会重新打开它并允许您按照自己的进度修复该问题。如果您要记录插件的所有安装,则需要在我们重新打开插件之前更正该问题。