WordPress 插件和主题开发人员的 16 条安全提示

已发表: 2021-10-19

一个人永远不能太小心!

作为开发人员,我们工作的很大一部分是确保我们正在构建的站点和插件是安全的。

企业需要更快的解决方案和越来越复杂的功能。 虽然这是一个很好的进展,但构建复杂的项目也需要适当的安全设置。 WordPress 安全性是网站开发最重要的方面之一。

随着功能越来越复杂,许多开发人员错过了基本的网站和 Web 应用程序开发安全原则。 这导致有缺陷的网站容易受到网络攻击和其他风险。

因此,您必须在构建项目时实施一些基本的网站和 Web 应用程序开发安全协议。
以下是针对 Web 开发人员的 16 条安全提示,可帮助您确保网站安全无虞。

1. 弄清楚哪些数据需要保护

最重要的网站开发安全原则之一是您只需要存储必要的数据。
当你在开发一个项目时,你需要问这三个问题:

  • 公司需要存储哪些数据?
  • 公司需要加密哪些敏感数据?
  • 如果由于某种原因,数据被泄露,它会对公司造成多大的伤害?

您存储的敏感数据越多,暴露的风险就越大。 如果您必须存储敏感数据,则需要对其进行加密,使其难以访问。

2.实施角色管理和访问控制

在设计网站、插件或主题时,为用户提供尽可能低的权限很重要。

应该限制​​权限,以便用户只能获得他们需要的东西而不能访问其他区域。

例如,贡献者应该被限制为能够创建新的帖子和页面,但不能发布它们。 编辑应该能够创建新帖子并发布它们,但不能更改设计或插件。

同样,在您想要限制的插件或主题中开发特定功能时,请确保在安装期间创建新的 WordPress 用户角色。 让管理员了解它们,以便将正确的角色分配给将使用您正在开发的插件或主题的相应用户。

这是结构外观的快速图示。

角色管理和访问控制结构

这种方法可以最大限度地减少问题,因为我们可以限制入侵者可以造成的破坏程度。 您还可以限制由好奇的用户在他们确实不应该在网站区域乱搞的错误或错误造成的损害。

您还需要根据开发团队的角色限制他们的访问权限。

3.申请认证

网站身份验证是允许用户验证其身份以访问网站受限区域的安全过程。

在开发主题或插件时,您将拥有需要限制的某些数据,而用户可以看到某些数据。 因此,您必须在代码中添加检查以验证访问受限数据的用户是否经过身份验证并具有正确的用户角色。

同样,在构建网站时,您可以实施有效的帐户管理实践,例如强密码强制和多因素身份验证,以保护用户数据。

双因素身份验证是最流行的身份验证方式之一。

双重身份验证 (2FA) 是一个两步过程,除了您的网站密码外,您还需要额外的代码或一次性密码 (OTP) 才能登录您的网站。 此 OTP 通常通过短信、电话或可识别的 2FA 应用程序(例如 Google Authenticator、Authy、Duo Security 等)发送到另一台设备。 实施 2FA 可让您免受暴力攻击。

如果您在 WordPress 中构建您的网站,请查看这些令人难以置信的工具来保护您的网站。

  • 限制登录尝试:此工具通过限制登录尝试的次数来保护您免受暴力攻击。 它还包括反垃圾邮件和自动非活动用户注销。
  • WP2 FA:WP2FA 插件可让您立即为您的网站添加双重身份验证。 它还支持多个 2FA 应用程序,例如 Google Authenticator、Authy、FreeOTP、Duo Security 等。
  • Shield Security:此插件不支持 Google Authenticator 和 SMS 2FA 等 2FA 应用程序,但对使用 YubiKey 的人很有用。
  • WPassword:此插件可帮助您为 WordPress 网站实施强密码,阻止登录尝试失败次数过多的用户等。 它与 WooCommerce 和其他第三方插件无缝集成。

4. 在发布之前检查您的主题或插件

在发布主题或插件之前,您需要确保您的代码尽可能无错误。 您可以使用某些 Composer 依赖项来检测代码中的任何漏洞。

WordPress 网站的一些推荐依赖项是:

  • Wpthemereview
  • Wp 编码标准

这些编码标准具有严格的编码规则,例如在打印数据之前始终对数据进行转义,对所有请求使用 nonce,在使用请求数据之前对其进行清理,提供适当的用户权限等等,以帮助保护您的代码。

如果您正在开发自己的主题或插件,这些工具非常有用。

您还应该查看 WPScan 安全扫描程序。 它是一款出色的在线网站安全扫描程序,可检查您的网站是否存在任何漏洞。

5. 避免某些 PHP 函数

某些 PHP 函数,如 eval() 和 unserialize(),可能会暴露系统数据,并可能导致暴露服务器数据,从而导致服务器关闭或从黑客那里访问所有服务器信息。

以下是一些您应该尽可能避免使用的 PHP 函数:

eval() : eval 可以执行任意 PHP 代码。 如果使用不当,它可能会使您的代码遭受注入攻击。

serialize()或 unserialize():不要将 serialize() 或 unserialize() 与用户提供的输入一起使用。 攻击者可以利用这些功能。 他们可以传递带有序列化任意对象的字符串来运行任意代码。

md5() : 互联网上到处都是关于 md5() 加密弱点的评论1 并且被认为是不安全的。 使用更好的散列函数,例如 SHA-2。

sha1() : sha1() 是另一个不应该使用的散列函数,因为散列算法的快速特性。 建议在任何现代框架中使用 SHA-2 散列算法代替 md5()。

6. 使用 linter 查找代码中的问题

lint 工具是一种基本的静态代码分析器,可检查您的源代码是否存在程序和样式错误。 Linter 的输出语气应该友好,以保持项目向前发展。

Lint 代码是在开发网站或应用程序时发现潜在漏洞并减少错误的好方法。 您可以将某些安全 linter 用于 PHP、JS 和 HTML 开发。

以下是一些用于静态分析 PHP 代码的著名工具:

  • PHP-并行-Lint
  • 声纳
  • 诗篇
  • PHP 皮棉

您也可以将 SonarLint 用于 HTML 和 Javascript linting。

其他值得注意的 JS linter 是:

  • JS皮棉
  • ES 皮棉

7.删除未使用的代码和插件

随着软件越来越复杂,代码中存在漏洞的可能性也在增加。 WordPress 主题和插件也不例外。 HTML5、CSS 和 JavaScript 等代码的功能不断增加,使开发人员能够构建丰富的 Web 应用程序。

然而,越来越复杂的应用程序是一把双刃剑。 虽然它们有助于提供用户期望的功能,但它们也扩大了应用程序的攻击面。 处理此类漏洞的一种措施是删除未使用的代码。

不同的用户可能不需要网站或 Web 应用程序的所有功能。 通过在每个部署中根据用户要求删除不必要的功能,您可以减少攻击面和相关风险。

如果您喜欢在 WordPress 中开发网站,我们建议您使用满足您需求的主题和插件,同时在代码方面保持轻量级。 它们不仅可以确保您的网站安全,还可以帮助优化搜索引擎。 以下是一些可用的最好的轻量级和最快的 WordPress 主题。

8.使用服务器端和客户端验证

如果您喜欢编写自定义代码,则必须同时使用客户端和服务器端验证。 客户端验证有助于防止用户犯下常见错误,例如错误输入数据或忘记字段。 这种验证会在无效数据到达服务器之前捕获它,从而节省时间和金钱。

想象一下,如果客户端验证仅在与服务器的往返失败后发生,您将面临延迟告诉用户他们做错了什么而不允许他们立即修复错误。

但是,仅客户端验证作为安全措施是不够的。 您还需要使用服务器端验证。 服务器端验证可保护您免受恶意输入和其他攻击媒介的侵害。

9.清理任何用户输入和请求数据

用户输入清理是一种网络安全措施,用于审核、清理和过滤来自用户和 API 的任何未经授权或不需要的字符和字符串的数据,以防止将有害代码注入系统。

黑客可以注入特定命令并执行可能危及您网站安全的操作。 输入清理有助于维护数据完整性并提高系统安全性。

10. 应用永久修复

在执行安全检查时,您可能会注意到一些不时再次出现的漏洞。 您需要确定新漏洞的根本原因,以便您可以永久根除它们,而不是添加部分补丁。

例如,您经常会在开发的主题或插件中遇到 SQL / XSS 问题。 在这种情况下,不是为每个输入构建一个清理检查,而是构建一个函数/类并使其成为一个策略,即每当有用户输入时,所有数据都应该通过这个类/函数传递。

11. 避免安全错误配置和默认设置

当未定义和实施安全设置并且维护默认值时,就会发生安全错误配置。 未能实施安全控制或实施错误可能会增加您构建的主题、插件或网站中存在漏洞的可能性。

错误配置经常发生,因为系统、数据库管理员或开发人员没有正确配置应用程序的框架,从而导致黑客的危险开放路径。

确保默认设置是安全的,并且不会自动设置密码(如果需要)。 例如,如果插件使用用户可以上传文件的目录,请始终要求用户设置密码和目录路径。

12. 让自己了解最新情况

网络安全是一个不断发展的领域。 您需要了解最新的安全更新和新出现的风险,以便跟上发展的步伐并减轻代码中新出现的威胁。

作为开发人员,它有助于让自己随时了解新闻并编写更安全的代码,以及保护编码、更好地清理代码和更好地处理用户输入的最佳实践是什么。

为此,请在线关注专家并随时了解您最喜欢的 Web 开发博客。 你已经在读这个了。 所以你有一个好的开始。

以下是有关 WordPress 安全性的一些最佳资源。

  • WP White Security 博客
  • WordFence 博客
  • 苏库里博客

13. 维护代码

你今天写的代码明天可能就不安全了。 新的漏洞变种不断出现,它也需要开发人员不断升级。

当您向插件或主题添加新功能时,请检查它是否不会影响其他模块或类或代码中的功能的安全性。 如果他们这样做,您需要更新代码以纠正问题。

您还可以使用 GitHub 等工具来维护主题或插件的代码。 它将帮助您跟踪代码并更快地解决问题。 安全总是在发展。 为了跟上最新趋势,必须不断更新您的安全测试,这样您才能发现漏洞并加以改进。

14. 定期更新你的软件包

这很简单。

保持 PHP、Javascript、HTML 等软件包的更新有助于解决新的安全问题。 提高软件安全性始终是一个持续关注的问题,为此,我们始终与此类软件的最新版本保持同步。

15.与你的团队合作

记下向您的支持团队提出的安全票。 如果您的客户报告任何安全问题,请优先解决这些问题。 您的最终用户对您的工作给出了最好的反馈,所以请好好利用它!

与开发团队讨论安全问题,并确保您开发的任何补丁都修复了安全问题,并且在公开之前不会破坏其他任何内容。 如果您需要经常与队友合作或与整个部门都参与支持的大客户合作,那么使用网络研讨会软件来促进这一过程是一个好主意。

16. 为最坏的情况做好准备

你不能太小心。 网络和任何在网络上发布的东西永远不可能是 100% 安全的。 但是,您可以采取有助于降低风险的措施。

关键是评估潜在的漏洞并制定适当的风险应对措施,并采取适当的安全措施。 新的攻击技术经常出现,因此最佳实践也必须作为此过程的一部分发展。

例如,如果 WordPress 网站被黑客入侵,应急计划应包括在被黑客入侵时应采取的措施。 这需要包含备份方法、清理过程以及重建网站和恢复服务所需的步骤。

这样的计划将允许所有利益相关者快速解决问题,而不会因信息过载或对不必要的行动反应过度而不知所措。

最后的想法

您还能做些什么来提高主题或插件的安全性? 嗯,很多东西。 你看,编写安全代码不是一次性的事情。 技术不断发展,攻击方法也随之发展。

现实情况是,您无法阻止所有网络攻击或减轻所有可能的风险。 你的目标应该是尽可能多地利用你所拥有的东西,并不断地重新审视你的代码以改进它。

为您的网站制定明确的安全计划,并准备好面对最坏的情况。 确保将与安全相关的票证或报告作为最高优先级。

在您的社区中发布博客文章或公告,说明您已发布安全修复程序,以便您的所有用户都可以更新并避免他们的网站受到威胁。

网络安全与军事战略没有太大区别。 关键是准备! 希望这篇文章可以帮助您做好准备。 请在评论中告诉我们您为提高网站安全性而采取的措施。

本文中使用的参考文献[ + ]

本文使用的参考资料
1 https://www.codeproject.com/Articles/11643/Exploiting-MD5-collisions-in-C