chipbennettГуру
Каковы рекомендации по безопасности для плагинов и тем WordPress? [закрыто]
Share
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Если кто-то с соответствующими привилегиями не против сделать это вики сообщества?
Чтобы получить вопрос в режиме вики , мод должен пометить вопрос соответствующим образом, я пометил его для внимания мода, теперь это просто вопрос времени.. 🙂
Что особенного в коралине? Imo все еще есть способы войти. Я бы предложил связать аноны А: wordpress.stackexchange.com/questions/13539/…
Возможно, в Коралине нет ничего особенного. Это просто тот, на который мы в настоящее время указываем разработчикам тем при обзоре тем, потому что это был пример, приведенный Джастином Тэдлоком, который сделал многие из первоначальных обзоров тем, связанных с безопасностью. Я бы также предложил энологию в качестве хорошего примера, но я не хочу показаться попыткой прокачать свою собственную Тему. 🙂
Дезинфекция на входе, бегство на выходе.. 🙂
Всегда рассматривайте $_POST, $_REQUEST и $_GET как небезопасные. Очистите и добавьте в белый список значения из этих массивов и поместите их в свои собственные переменные. Никогда не очищайте значения, поступающие от пользователя, и не помещайте их обратно в $_POST.
Всегда проверяйте, что ключ, который вам нужно использовать, установлен в соответствующем массиве. isset() твой друг 🙂
не то же самое, что подготовленные операторы.
Можете ли вы уточнить
set_theme_mod()
, в частности, как правильно совместить его с использованием API настроек?@Chip Bennett Я добавил некоторую информацию к своему ответу.
Можете ли вы разбить этот мини-список на более мелкие и конкретные ответы? Легче управлять вики сообщества небольшими порциями. ТИА
Фишка: система модов Theme не слишком хорошо интегрируется с API настроек. Я напишу пост, объясняющий, как сделать это правильно в ближайшее время.
Небольшое, но важное примечание: вы не можете использовать
edit_theme_options
API настроек, однако отправка параметров жестко закодирована, чтобы требоватьmanage_options
их для отправки обновлений. Соответствующий билет Trac можно найти здесь.Верно, но 1) это повлияет только на редакторов, а не на администраторов; и 2) мы надеемся, что это скоро будет решено с помощью связанного билета Trac.
Всегда есть возможность, что пользовательская роль или обычная роль будут
edit_theme_options
ограничены, я подумал, что было бы удобно указать, что API настроек в его текущем состоянии может использоваться только ролями сmanage_options
возможностью.Я добавил немного выделенного текста, чтобы указать, что ссылки являются примерами того, что не следует делать, так как легко просмотреть информацию и щелкнуть ссылки, не читая предшествующий им абзац. Также сделал ответ немного красивее, пока я был там… 😉
Это могло бы использовать небольшое объяснение того, что именно примеры учебников делают неправильным и/или старым способом.
См. мой комментарий к этому ответу относительно API настроек и параметров темы.
Используйте одноразовые номера (если не используете API настроек)
Плагины и темы должны явно обеспечивать проверку одноразового номера страницы настроек, если не используется API настроек:
Дезинфекция, проверка и экранирование данных
Дезинфицируйте все, что может войти и выйти (!) из базы данных как на переднем, так и на внутреннем уровне!
Плагины и темы должны выполнять надлежащую проверку данных:
Избегайте всех ненадежных данных перед выводом в файлы шаблона темы.
Плагины и темы следует использовать
esc_attr()
для ввода текста иesc_html()
/илиesc_textarea()
для текстовых областей.Также в WordPress API доступны файлы
esc_url()
,esc_url_raw()
иesc_js()
.wp_filter_kses()
Плохой пример:
Хороший пример:
Вот отличное видео Марка Джакита, объясняющее использование экранирующих функций:
Используйте $_GET / $_POST / $_REQUEST осторожно и только тогда, когда лучшие API недоступны.
Плагины и темы должны использовать API настроек для получения и сохранения входных данных формы, а не полагаться на
$_POST
данные$_REQUEST
напрямую.Использовать
$wpdb->prepare
При построении пользовательских запросов через
$wpdb
объект всегда используйте$wpdb->prepare
для заполнения заполнителей значениями вместо того, чтобы писать запросы с данными, смешанными с кодом SQL, посколькуmysql_*
семейные функции ошибочно учат всех.Будьте осторожны с функциями 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, если он доступен. Безопасность вашего читателя тоже важна.
Сохранить данные в одном массиве
Плагины и темы должны сохранять параметры в одном массиве, а не создавать несколько параметров для страницы настроек. С этим справится использование API настроек.
Проверка соответствующих возможностей при добавлении и выводе страниц настроек
Плагины должны использовать соответствующую возможность (например
manage_options
, ) для добавления страницы настроек.Темы следует использовать
edit_theme_options
как соответствующие возможности для добавления страницы настроек.Используйте актуальные руководства и информацию
Плагины и темы должны преднамеренно реализовывать страницы параметров и настроек и не полагаться на руководства по копированию и вставке веб-сайтов, которые устарели и не включают надлежащую защиту данных, например перечисленные ниже.
Примеры того, что нельзя делать :
Как создать страницу параметров для вашей темы WordPress (1stwebdesigner.com)
Создайте потрясающую страницу параметров темы WordPress, часть 1 (wpshout.com)
Использовать API настроек
Плагины и темы должны использовать API настроек, который проще в использовании, более безопасен и выполняет большую часть тяжелой работы страниц настроек:
Хорошие руководства по использованию API настроек см. в разделе: