Назвіть загальні вади безпеки, які мені потрібно шукати? [зачинено]


16

Як розробник плагінів Wannabe WP, які основні недоліки / отвори в безпеці я повинен шукати?

Я збираюся створити новий плагін з панеллю конфігурації (тобто поля введення та інше). Що мене турбує?

Наприклад, чи є така санітарія даних великою справою, оскільки вона знаходиться у / wp-admin / області? Чи може хтось зловмисник безпосередньо потрапити на мою сторінку плагіна та надіслати POST-запити чи щось подібне?

Дякую!

Відповіді:


16

Ось модифікований контрольний список, заснований на моїх поточних налаштуваннях / контрольному списку безпеки даних, що використовуються для перегляду тем (принципи не повинні відрізнятися для плагінів, ніж для тем):

  1. Плагіни повинні префіксувати всі параметри, користувацькі функції, спеціальні змінні та власні константи з плагіном-слигом.

  2. Плагіни повинні реалізовувати сторінки "Параметри плагіна" та "Налаштування плагінів" навмисно, а не покладатися на копіювати та вставляти скрипти з підручників веб-сайтів, таких як наведені нижче, які застаріли і не включають належного захисту даних:

  3. Плагіни повинні використовувати add_options_page()функцію, щоб додати сторінку Settingsменю плагінів до меню, а не використовувати add_menu_page()меню верхнього рівня.

  4. Плагіни повинні використовувати відповідні можливості (наприклад manage_options) для можливості додавання сторінки налаштувань.

  5. Плагіни повинні зберігати параметри в одному масиві, а не створювати кілька параметрів для сторінки налаштувань. Використання API налаштувань (див. Нижче) впорається з цим.

  6. Плагіни повинні використовувати API налаштувань (див. Нижче) для отримання та збереження вхідних даних форми, а не покладатися на дані $_POSTта $_REQUESTбезпосередньо.

  7. Для прапорців і вибору опцій, плагіни повинні використовувати checked()і selected()функцію для виведення checked="checked"і selected="selected", відповідно.

  8. Плагіни повинні перевірити та зафіксувати всі недовірені дані перед тим, як вводити дані в базу даних, і повинні уникати всіх недовірених даних перед виведенням у поля Налаштування форми та перед виведенням у файли шаблону теми:

  9. Плагіни повинні використовуватись esc_attr()для введення тексту та esc_html()(або esc_textarea()в WP 3.1) для текстових областей.

  10. Плагіни повинні чітко надавати перевірку на сторінці налаштувань, якщо не використовується API налаштувань:

  11. Також настійно рекомендується плагінам використовувати API налаштувань, який простіший у використанні, більш захищений та піклується про багато напруженої роботи сторінок налаштувань:

Хороший підручник із використання API налаштування див. У розділі:

Якщо ви хочете перевірити тему на захищеній та суцільно закодованій сторінці налаштувань теми, перегляньте цю тему:
http://wordpress.org/extend/themes/coraline


І я повинен додати: якщо хтось бачить щось, що не вистачає зі списку, будь ласка, прокоментуйте його , щоб я міг додати його до контрольного списку, щоб допомогти покращити огляд безпеки для Тем!
— Чіп Беннетт

Ого, чудовий список, дякую. Цікаво, чи варто зробити це питання спільним вікі та зробити кожен із цих пунктів власною відповіддю, щоб краще дозволити обговорення та опрацювання?
— goldenapples

Я б з цим добре, але не хочу викрадати питання оригінального плаката (якщо тільки так не робиться на StackExchange? Я все ще новий тут ...).
— Чіп Беннетт

Я теж не хочу ... залишаю це на розсуд модераторів. Це здається, що це поставить велике питання щодо вікі, оскільки його настільки важливі та найкращі практики все ще розробляються. @Rarst?
— goldenapples

Я можу створити нове запитання, якщо це буде потрібно?
— Чіп Беннетт

11

Для цього є два аспекти:

  1. Основні принципи.

    • Що б не було записано в базу даних, слід перевірити наявність ін'єкцій SQL.
    • Що б не було надруковано на екрані, слід перевірити, чи не друкується шкідливий JavaScript.
    • Кожен раз, коли хтось щось робить, слід перевірити, чи був це його намір, і чи має він належні можливості.
    • Є ще багато речей, на які ви чи я ніколи не подумаєте перевірити.
  2. Особливості.

    • Сучасний WordPress сприймає безпеку серйозно і прагне полегшити розробників.
    • Отже, для більшості речей, які ви хочете зробити, є, швидше за все, спосіб зробити це за допомогою WP API.
    • Отже, все, що ви робите вашим першим кроком, було б вдосконалити та вивчити відповідний API.
    • Чим далі ви від загальної та простої функціональності, тим складніші речі вам знадобляться для вивчення та впровадження.

1
  1. Додайте defined('ABSPATH') or die('Access denied');в кожен сценарій плагіна, який використовується Wordpress безпосередньо
  2. Додайте порожній файл index.php у кожен каталог
  3. Додайте .htaccess у каталог плагінів із необхідними інструкціями для запобігання прямого доступу до певних файлів плагіна.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.