Wordpress et citations magiques

10

Je suis en train d'écrire des plugins Wordpress, et j'ai un problème avec le fait que Wordpress met des citations magiques sur les données POST et GET.

Plus précisément, la fonction "wp_magic_quotes" dans \ wp-includes \ load.php, appelée (probablement sur chaque réponse) dans wp-settings.php. Cette fonction ajoute des citations magiques aux données même si je désactive les citations magiques dans les paramètres 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 );
}

Puis-je simplement commenter l'appel wp_magic_quotes () dans wp-settings.php? Autrement dit, cela affectera-t-il le code Wordpress normal et / ou ouvrira-t-il un vecteur d'exploitation? Si tel est le cas, existe-t-il un autre moyen de le faire en plus de la modification du code WP (afin que je n’aie pas à gérer cela à chaque mise à jour)?

    
posée Matthew Groves 01.07.2011 - 03:19

5 réponses

6

Bref, WP transforme une situation indéterminée (les guillemets magiques peuvent ou non être activés dans la configuration du serveur) en déterminants (les guillemets magiques sont toujours présents et la configuration du serveur n'a pas d'importance).

Plutôt que de jouer avec cela pour tout le noyau WP, il est beaucoup plus logique de simplement supprimer les barres obliques dans votre code sur vos propres variables, lorsque vous en avez besoin.

    
réponse donnée Rarst 01.07.2011 - 11:48
2

Le comportement actuel dans WordPress est la meilleure pratique basée sur la compatibilité de tous les systèmes et configurations PHP. WordPress a toujours normalisé les balises $ _GET, $ _POST, $ _COOKIE et $ _SERVER, et s’attend à ce qu’elle continue de le faire.

Donc, pour extraire un paramètre POST ou GET, nous devons écrire:

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

$value = stripslashes_deep($_GET['name']);
    
réponse donnée two7s_clash 01.07.2011 - 20:02
0

Je pense que les liens suivants pourraient aider:

réponse donnée Abhay 01.07.2011 - 04:08
0

J'ai écrit une solution pour traiter ces tableaux superglobaux dans une question similaire dans Stack Overflow.

Il consiste à écrire une seule "méthode d’accesseur" (get / set) pour chaque superglobale, en effectuant des slashs et des stripping de manière transparente. Donc, vous utiliseriez, par exemple:

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

De cette façon, vous pouvez vous abstenir de jouer avec les superglobales et profiter d’une solution qui fonctionnera "localement" pour votre code, sans aucun effet secondaire. Pour moi, c’était la solution ultime.

    
réponse donnée André Chalella 09.11.2015 - 15:20
-3

J'avais récemment ce problème et je l'ai finalement compris. En gros, je cherchais presque tous les sites Web sur des citations magiques sur wordpress et aucun d’entre eux n’a aidé.

Voici comment résoudre ce problème:

1) allez dans votre wp-settings.php

2) recherchez wp_magic_quotes ();

3) commentez-le et cela devrait fonctionner maintenant

raison pour laquelle cela fonctionne

Cela fonctionne car si vous regardez avant ce code, vous verrez:

// Désactive les guillemets magiques au moment de l'exécution. Les guillemets magiques sont ajoutés à l'aide de wpdb ultérieurement dans //wp-settings.php.

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

Les citations magiques ajoutées ultérieurement à l'aide de wpdb sont ce qui dérange la plupart des gens et il se trouve qu'il s'agit de wp_magic_quotes (). Juste en commentant cela empêchera les guillemets magiques de vous déranger.

    
réponse donnée Joe 31.03.2013 - 19:44

Lire d'autres questions sur les étiquettes