我需要寻找哪些常见的安全缺陷?[关闭]


16

作为想成为WP插件的开发人员,我应该寻找哪些主要的安全漏洞/漏洞?

我将使用配置面板(即输入字段和内容)创建一个新插件。我应该担心什么?

例如,由于数据清理在/ wp-admin /区域中是否重要?恶意者可以直接点击我的插件页面并发送POST请求或类似的内容吗?

谢谢!

Answers:


16

这是一个修改后的检查表,基于我当前用于审阅主题的(正在进行的)设置/数据安全检查表(插件的原理应与主题相同)。

  1. 插件应在所有选项,自定义函数,自定义变量和自定义常量之前加上plugin-slug。

  2. 插件应故意实现“插件选项”和“插件设置”页面,而不是依靠网站教程中的复制和粘贴脚本(例如以下脚本),这些脚本已过时,并且不包括适当的数据安全性:

  3. 插件应使用该add_options_page()功能将“插件设置页面”添加到Settings菜单,而不是add_menu_page()用于添加顶级菜单。

  4. 插件应使用适当的功能(例如manage_options)来添加设置页面的功能。

  5. 插件应将选项保存在单个数组中,而不是为设置页面创建多个选项。使用设置API(请参见下文)可以解决此问题。

  6. 插件应使用Settings API(请参阅下文)来获取和保存表单输入数据,而不是直接依赖$_POST$_REQUEST数据。

  7. 对于复选框和选择选项,插件应分别使用checked()selected()函数来输出checked="checked"selected="selected"

  8. 在将数据输入数据库之前,插件应验证和清除所有不受信任的数据,并且应在设置表单字段中输出和在主题模板文件中输出之前,对所有不受信任的数据进行转义:

  9. 插件esc_attr()应用于文本输入,esc_html()(或esc_textarea()在WP 3.1中)应用于文本区域。

  10. 如果不使用Settings API,则插件应显式提供Settings-page nonce检查:

  11. 还强烈建议插件使用设置API,该API更易于使用,更安全,并且可以处理很多设置页面的工作:

有关使用Settings API的良好教程,请参见:

如果要使用安全且经过严格编码的主题设置页面检出主题,请检出此主题:http :
//wordpress.org/extend/themes/coraline


我应该补充:如果任何人看到列表中缺少任何内容,请发表评论,以便我可以将其添加到清单中,以帮助改进主题的安全性检查!
Chip Bennett

哇,很棒的清单,谢谢。我想知道是否值得将这个问题作为社区Wiki,并将每个问题都作为自己的答案,以便更好地进行讨论和阐述?
goldenapples

我可以接受,但是不想劫持原始发布者的问题(除非这是在StackExchange上完成的方式?我在这里还是新手...)。
Chip Bennett

我也不知道...由主持人自行决定,我想。如此看来,这将是一个很大的wiki问题,因为其如此重要和最佳实践仍在制定中。@Rarst?
goldenapples

如果需要,我可以创建一个新问题?
Chip Bennett

11

这有两个方面:

  1. 基本原则。

    • 无论写入数据库的内容是什么,都应检查是否有SQL注入。
    • 无论打印到屏幕上的任何内容,都应检查它是否不会打印有害的JavaScript。
    • 每当有人做某事时,应检查是否打算这样做,并且他具有适当的能力。
    • 您或我可能根本不想检查的东西还有很多。
  2. 细节。

    • 现代WordPress十分重视安全性,旨在使开发人员更轻松。
    • 因此,对于大多数您想做的事情,最有可能通过WP API完成的方法。
    • 因此,您要做的第一步就是完善和研究适当的API。
    • 您对通用和简单功能的了解越深,您将需要研究和实现的复杂性越多。

1
  1. defined('ABSPATH') or die('Access denied');在直接由wordpress使用的每个插件脚本中添加
  2. 在每个目录中添加空的index.php文件
  3. 在插件目录中添加.htaccess并附带所需的说明,以防止直接访问某些插件的文件。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.