J'ai écrit des plugins Wordpress et j'ai eu des problèmes avec Wordpress pour mettre des guillemets magiques sur les données POST et GET.
Plus précisément, la fonction "wp_magic_quotes" dans \ wp-includes \ load.php, qui est appelée (vraisemblablement à chaque réponse) dans wp-settings.php. Cette fonction ajoute des guillemets magiques aux données même si je désactive les guillemets 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 commenter simplement l'appel wp_magic_quotes () dans wp-settings.php? Autrement dit, cela affectera-t-il négativement le code Wordpress normal et / ou ouvrira-t-il un vecteur d'exploitation? Si c'est le cas, existe-t-il une autre façon de le faire en plus de modifier le code WP (donc je n'ai pas à gérer cela à chaque fois qu'il y a une mise à jour)?
wp_magic_quotes()
est exécutée? Je n'ai pas pu trouver l'exécution dans wp-core.Réponses:
Il suffit de mettre WP transforme une situation indéterminée (les guillemets magiques peuvent ou non être activés dans la configuration du serveur) en déterminés (les guillemets magiques sont toujours présents et la configuration du serveur n'a pas d'importance).
Plutôt que de jouer avec tout cela pour WP, il est beaucoup plus logique de simplement supprimer les barres obliques dans votre code sur vos propres variables, lorsque vous en avez besoin.
la source
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é $ _GET, $ _POST, $ _COOKIE et $ _SERVER à réduire, et attendez-vous à ce qu'il continue à le faire.
Donc, pour extraire un paramètre POST ou GET, nous devons écrire:
$value = stripslashes_deep($_POST['name']);
oula source
Je pense que les liens suivants pourraient aider:
la source
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, à couper et à supprimer de manière transparente. Vous utiliseriez donc, par exemple:
De cette façon, vous pouvez vous abstenir de jouer encore plus avec les superglobaux et profiter d'une solution qui fonctionnera "localement" pour votre code, sans aucun effet secondaire. Pour moi, c'était la solution ultime.
la source
J'ai récemment eu ce problème et je l'ai finalement compris. Je cherchais essentiellement presque tous les sites Web sur des citations magiques sur WordPress et aucun d'eux n'a aidé.
Voici comment y remédier:
Allez dans votre wp-settings.php
Rechercher wp_magic_quotes ();
Il suffit de le commenter et cela devrait fonctionner maintenant
Cela fonctionne car si vous regardez avant ce code, vous verrez:
Ce Magic citations qui est ajouté plus tard en utilisant wpdb est ce qui dérange la plupart des gens, et il se trouve que wp_magic_quotes (). Le simple fait de commenter cela empêchera les citations magiques de vous gâcher.
la source