matthewgroves
  • 0
Новичок

WordPress и волшебные кавычки

  • 0

Я писал несколько плагинов для WordPress, и у меня возникла проблема с тем, что WordPress помещал волшебные кавычки в данные POST и GET.

В частности, функция «wp_magic_quotes» в \wp-includes\load.php, которая вызывается (предположительно при каждом ответе) в wp-settings.php. Эта функция добавляет волшебные кавычки к данным, даже если я отключил волшебные кавычки в настройках PHP.

/**
 * Add magic quotes to $_GET, $_POST, $_COOKIE, and $_SERVER.
 *
 * Also forces $_REQUEST to be $_GET + $_POST. If $_SERVER, $_COOKIE,
 * or $_ENV are needed, use those superglobals directly.
 *
 * @access private
 * @since 3.0.0
 */
function wp_magic_quotes() {
    // If already slashed, strip.
    if ( get_magic_quotes_gpc() ) {
        $_GET    = stripslashes_deep( $_GET    );
        $_POST   = stripslashes_deep( $_POST   );
        $_COOKIE = stripslashes_deep( $_COOKIE );
    }

    // Escape with wpdb.
    $_GET    = add_magic_quotes( $_GET    );
    $_POST   = add_magic_quotes( $_POST   );
    $_COOKIE = add_magic_quotes( $_COOKIE );
    $_SERVER = add_magic_quotes( $_SERVER );

    // Force REQUEST to be GET + POST.
    $_REQUEST = array_merge( $_GET, $_POST );
}

Безопасно ли мне просто закомментировать вызов wp_magic_quotes() в wp-settings.php? То есть не повлияет ли это негативно на обычный код WordPress и/или откроет какой-то вектор эксплуатации? Если да, то есть ли другой способ сделать это, помимо изменения кода WP (чтобы мне не приходилось иметь дело с этим каждый раз, когда выходит обновление)?

Share
  1. Может ли кто-нибудь сказать мне, где/когда функция wp_magic_quotes() выполняется? Я не смог найти исполнение в wp-core.

    • 0
  2. Проще говоря, WP превращает неопределенную ситуацию (волшебные кавычки могут быть включены, а могут и не включаться в конфигурации сервера) в детерминированную (волшебные кавычки всегда присутствуют, и конфигурация сервера не имеет значения).

    Вместо того, чтобы возиться с этим для всего ядра WP, гораздо разумнее просто убрать косые черты в вашем коде на ваших собственных переменных, когда вам это нужно.

    • 0

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

You must login to add an answer.