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


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.