Wordpress e citações mágicas

10

Eu tenho escrito alguns plugins do Wordpress, e eu tenho tido alguns problemas com o Wordpress colocando citações mágicas em dados POST e GET.

Especificamente, a função "wp_magic_quotes" em \ wp-includes \ load.php, que é chamada (presumivelmente em cada resposta) em wp-settings.php. Essa função adiciona aspas mágicas aos dados, mesmo se eu desativar as aspas mágicas nas configurações do 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 );
}

É seguro para mim apenas comentar a chamada wp_magic_quotes () em wp-settings.php? Isto é, afetará negativamente o código Wordpress normal e / ou abrirá algum vetor de exploração? Em caso afirmativo, existe alguma outra maneira de fazer isso além de modificar o código WP (então eu não tenho que lidar com isso toda vez que houver uma atualização)?

    
por Matthew Groves 01.07.2011 / 03:19

5 respostas

6

Simplificando, o WP transforma a situação indeterminada (as cotações mágicas podem ou não estar habilitadas na configuração do servidor) em determinado (as cotações mágicas estão sempre presentes e a configuração do servidor não importa).

Em vez de mexer com isso para todo o núcleo do WP, faz muito mais sentido simplesmente despir barras em seu código em suas próprias variáveis, quando você precisar disso.

    
por Rarst 01.07.2011 / 11:48
2

O comportamento atual no WordPress é a melhor prática baseada na compatibilidade de todos os sistemas e configurações PHP. O WordPress sempre normalizou $ _GET, $ _POST, $ _COOKIE e $ _SERVER para serem cortados, e espera que continue assim.

Então, para extrair um parâmetro POST ou GET, temos que escrever:

$value = stripslashes_deep($_POST['name']); ou

$value = stripslashes_deep($_GET['name']);
    
por two7s_clash 01.07.2011 / 20:02
0

Acho que os links a seguir podem ajudar:

por Abhay 01.07.2011 / 04:08
0

Escrevi uma solução para lidar com esses arrays superglobais em uma pergunta semelhante no Stack Overflow.

Consiste em escrever um único "método de acesso" (get / set) para cada superglobal, cortando e removendo transparentemente. Então você usaria, por exemplo:

echo _get('username');    // echo stripslashes_deep($_GET['username']);
_cookie('name', 'value'); // $_COOKIE['name'] = addslashes_deep('value');

Dessa forma, você pode evitar mexer ainda mais com as superglobais e aproveitar uma solução que funcionará "localmente" para o seu código, sem efeitos colaterais. Para mim, foi a solução final.

    
por André Chalella 09.11.2015 / 15:20
-3

Recentemente tive esse problema e finalmente descobri. Basicamente, eu pesquisei quase todos os sites sobre citações mágicas no wordpress e nenhum deles ajudou.

Isso é como corrigir isso:

1) vá para o seu wp-settings.php

2) procure por wp_magic_quotes ();

3) apenas comente e deve funcionar agora

razão porque isso funciona

Isso funciona porque, se você olhar antes desse código, verá:

// Desativar as cotações mágicas no tempo de execução. As citações mágicas são adicionadas usando o wpdb mais tarde em //wp-settings.php.

@ini_set ('magic_quotes_runtime', 0); @ini_set ('magic_quotes_sybase', 0);

As citações mágicas que são adicionadas posteriormente usando o wpdb é o que está bagunçando a maioria das pessoas e acontece que ele é wp_magic_quotes (). Apenas comentando que impedirá que as citações mágicas estraguem você.

    
por Joe 31.03.2013 / 19:44

Tags