Intereting Posts
Все стили ищут URL сайта дважды Заголовок сообщения из выбранной категории в меню Таможенный шаблон таксономии Должен ли я создавать несколько боковых панелей или использовать или одну динамическую боковую панель с логикой для определения ее способностей? Добавление шрифтов dashicon в администратор настроек до 3.8 WordPress взломан? Сообщения не найдены в панели управления причина разделения файлов темы на несколько файлов Как использовать Категории настраиваемого типа сообщения как включить пользовательские кнопки tinymce в мета-окне? Как изменить каталог временного обновления? Необходимо заблокировать роль пользователя в доступе к bbPress AJAX возвращает ответ 0 Изменить путь к изображениям, возвращаемым get_the_content () Создание мобильного сайта, добавив новый класс в тег body из functions.php Теги шаблона, не работающие в предварительном просмотре

add_query_arg () Уязвимость XSS

Я создал персональный плагин, и теперь меня беспокоит эта уязвимость: https://blog.sucuri.net/2015/04/security-advisory-xss-vulnerability-affecting-multiple-wordpress-plugins.html

Вот как я использую add_query_arg (). Является ли это прекрасным, или я должен каким-то образом его защитить?

general_plugin.php

function add_custom_query_var( $vars ){ $vars[] = "custom_var"; return $vars; } add_filter( 'query_vars', 'add_custom_query_var' ); 

plugin_part1.php

 ... echo '<a href="https://www.example.com/page/?custom_var='.$db_table->db_column.'">text</a>....' ... 

plugin_part1-fixed.php

 ... echo '<a href="https://www.example.com/page/'.add_query_arg( "custom_var", $db_table->db_column).'">text</a>....' ... 

plugin_part2.php

 $id = intval(get_query_var( 'custom_var' )); $sql = $mydb->prepare( " SELECT * FROM `db_table` WHERE `db_table`.`db_column` = %d ", array($is) ); 

Если мне не хватает чего-то, что смотрит мне в лицо, вы не используете add_query_arg() или remove_query_arg() ; поскольку это единственные функции, затронутые этим конкретным эксплойтом, вы должны быть в безопасности.

В вашем коде используется фильтр query_vars и get_query_var() но ни один из них не get_query_var() эксплойтом, на который вы ссылались.

В противном случае ваш код выглядит хорошо, я вижу опечатку во второй строке «plugin_part2.php», вероятно, это array($id) . Не видя остальных в контексте, я не могу сказать, что вы в безопасности со 100% уверенностью, но ничто из того, что вы опубликовали, не уязвимо для эксплойта, о котором вы просите.

Для тех, кто наткнулся на этот пост, исправление для этого конкретного эксплойта происходит следующим образом: любой экземпляр:

 add_query_arg($param1, $param2, $old_query_or_uri); 

или

 remove_query_arg($key, $query); 

следует заменить на

 esc_url(add_query_arg($param1, $param2, $old_query_or_uri)); 

или

 esc_url(remove_query_arg($key, $query)); 

соответственно.

В этой статье есть отличная запись этого эксплойта.