• Всем Привет!
    Прошу помочь разобраться, ибо я обескуражен Требованиями Команды по обзору плагинов WordPress.
    Во всяком случае, Формулировками.

    Мой Плагин был Удален из Репозитария по причине обнаруженной Уязвимости.
    (Это отдельная и Сомнительная История, о которой позже)

    Вот Формулировка следующей причины отказа в публикации Плагина, после внесенных изменений в новую версию:
    It looks like you’re escaping variables too early or with the wrong context. Remember: escape variables at the point of output, not before and the context matters!

    For example: Use esc_html() for outputting to HTML (outside of tags) ...etc…

    Вот указанный фрагмент кода страницы Настройки Опций Плагина:

    <input id="hackinfo_digest_timer" name="hackinfo_digest_timer" type="text" style="width: 40px; text-align: center;" value="<?php echo esc_html($HackInfo_Digest_Timer); ?>">

    Я не понимаю, что значит: «Слишком раннее экранирование может стать проблемой, если ваш код когда-либо обновляется и контекст переменной при выводе изменяется.» применительно к этому фрагменту.

    Буду благодарен за конструктивные советы. За Неконструктивные тоже.

    Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Возможно просто ожидалось использования esc_attr

    Спасибо за ответ.
    Отправил на проверку с esc_attr вместо esc_html

    Но просто для Объективности.
    Найдите Отличие в Коде этих обеих Функций:

    function esc_html( $text ) {
    $safe_text = wp_check_invalid_utf8( $text );
    $safe_text = _wp_specialchars( $safe_text, ENT_QUOTES );

    return apply_filters( 'esc_html', $safe_text, $text );
    }
    function esc_attr( $text ) {
    $safe_text = wp_check_invalid_utf8( $text );
    $safe_text = _wp_specialchars( $safe_text, ENT_QUOTES );

    return apply_filters( 'attribute_escape', $safe_text, $text );
    }

    В коде нет разницы, а в применении есть. Вдруг у меня специально применен фильтр к ‘attribute_escape’ и только Ваш плагин использует esc_html

    Прелестно ))

    Даже если это и так, то:

    1. Это совсем мало похоже на: «Слишком раннее экранирование…» как было указано.
    2. Это не является на мой взгляд Настолько Грубым Нарушением Норм и Правил WP, чтобы Отказать в Публикации Плагина.
    • Я совершенно к вам лично не имею никаких Претензий. Наоборот, пишу это из Уважения.

    Хочу заметить, что когда речь идет об Опциях Настройки Плагина или любой другой Формы вывода Информации, то важно обеспечить Достоверность Данных.
    (Мы не рассматриваем сейчас вопрос Валидации данных введенных Пользователем, предполагая, что они были корретны, санитаризированы и попытки Зловредных Действий мы успешно пресекли)

    Тем не менее, вот простой пример.
    Предположим, в Поле «Secret_Key» я пытаюсь в своем Плагине вывести Сохраненные Данные из DB:

    $Secret_Key = get_option ( 'my_secret_key', 'N/A' );
    // Ожидаем $Secret_Key = 'ABC'

    Вариант A (как я бы хотел это ожидать)

    <input name="my_secret_key" type="text" value="<?php echo $Secret_Key; ?>">
    // Будет выведено: 'ABC'. Абсолютная Достоверность.

    Вариант B (это когда вы «специально применяете фильтр: esc_attr»)

    <input name="my_secret_key" type="text" value="<?php echo esc_attr($Secret_Key); ?>">
    // Будет выведено то, что вы пожелаете, если захотите Фальсифицировать это. 'ABC' -> 'XYZ'

    Дело Закрыто.

    Есть много над чем поразмышлять…

Просмотр 5 ответов — с 1 по 5 (всего 5)