chipbennett
  • 0
Гуру

Каковы рекомендации по безопасности для плагинов и тем WordPress? [закрыто]

  • 0
Share
  1. Если кто-то с соответствующими привилегиями не против сделать это вики сообщества?

    • 0
  2. Дезинфекция, проверка и экранирование данных

    Дезинфицируйте все, что может войти и выйти (!) из базы данных как на переднем, так и на внутреннем уровне!

    Плагины и темы должны выполнять надлежащую проверку данных:

    1. Проверяйте и очищайте все ненадежные данные перед вводом данных в базу данных.
    2. Экранировать все ненадежные данные перед выводом в поля формы настроек
    3. Избегайте всех ненадежных данных перед выводом в файлы шаблона темы.

    Плагины и темы следует использовать esc_attr() для ввода текста и esc_html() /или esc_textarea() для текстовых областей.

    Также в WordPress API доступны файлы esc_url(), esc_url_raw() и esc_js() .wp_filter_kses()

    Плохой пример:

    <?php $url = 'javascript:pwnd()'; ?>
    <a href="<?php echo $url; ?>">anchor</a>
    

    Хороший пример:

    <a href="<?php echo esc_url($url); ?>">anchor</a>
    

    Вот отличное видео Марка Джакита, объясняющее использование экранирующих функций:

    • 0
  3. Используйте $_GET / $_POST / $_REQUEST осторожно и только тогда, когда лучшие API недоступны.

    Плагины и темы должны использовать API настроек для получения и сохранения входных данных формы, а не полагаться на $_POST данные $_REQUEST напрямую.

    • 0
  4. Использовать$wpdb->prepare

    При построении пользовательских запросов через $wpdb объект всегда используйте $wpdb->prepare для заполнения заполнителей значениями вместо того, чтобы писать запросы с данными, смешанными с кодом SQL, поскольку mysql_* семейные функции ошибочно учат всех.

    • 0
  5. Будьте осторожны с функциями PHP, которые могут использоваться для запуска вредоносного кода.

    Полезно прочитать всем, кто пишет PHP: Exploitable PHP functions on StackOverflow.

    Использовать API модификации темы

    Темы должны использовать set_theme_mod() и связанные с ними функции, а не самопридуманную схему имен.
    API theme_mod — это специализированный слой для API настроек; он гарантирует уникальные имена, объединяет все параметры в один массив и, по моему опыту, намного проще в обращении. Кроме того, он предлагает стандартизированные фильтры для плагинов, что хорошо для совместимости.

    Избегать включеноregister_globals

    Не полагайтесь на register_globals = on . Pro Theme, которую купил мой последний клиент, делает именно это. Я мог взломать любой сайт с помощью этой темы за 5 минут
    … ThimbThumb тоже это делал (и делает до сих пор?).

    Не создавайте файлы с ненужными разрешениями широкого доступа

    Не создавайте файлы со слишком свободными правами доступа.

    Используйте SSL там, где он доступен

    Укажите ссылку на ссылку « Поделиться в Twitter/Facebook/Anything» на HTTPS URI, если он доступен. Безопасность вашего читателя тоже важна.

    • 0
  6. Сохранить данные в одном массиве

    Плагины и темы должны сохранять параметры в одном массиве, а не создавать несколько параметров для страницы настроек. С этим справится использование API настроек.

    • 0
  7. Проверка соответствующих возможностей при добавлении и выводе страниц настроек

    Плагины должны использовать соответствующую возможность (например manage_options, ) для добавления страницы настроек.

    Темы следует использовать edit_theme_options как соответствующие возможности для добавления страницы настроек.

    • 0
  8. Используйте актуальные руководства и информацию

    Плагины и темы должны преднамеренно реализовывать страницы параметров и настроек и не полагаться на руководства по копированию и вставке веб-сайтов, которые устарели и не включают надлежащую защиту данных, например перечисленные ниже.

    Примеры того, что нельзя делать :

    • 0
  9. Использовать API настроек

    Плагины и темы должны использовать API настроек, который проще в использовании, более безопасен и выполняет большую часть тяжелой работы страниц настроек:

    Хорошие руководства по использованию API настроек см. в разделе:

    • 0

Оставить ответ

You must login to add an answer.