He estado escribiendo algunos complementos de Wordpress, y he tenido algunos problemas con Wordpress poniendo citas mágicas en los datos POST y GET.
Específicamente, la función "wp_magic_quotes" en \ wp-includes \ load.php, que se llama (presumiblemente en cada respuesta) en wp-settings.php. Esta función agrega comillas mágicas a los datos incluso si desactivo las comillas mágicas en la configuración de 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 );
}
¿Es seguro para mí comentar la llamada wp_magic_quotes () en wp-settings.php? Es decir, ¿afectará negativamente el código normal de Wordpress y / o abrirá algún vector de explotación? Si es así, ¿hay alguna otra forma de hacerlo además de modificar el código WP (por lo que no tengo que lidiar con esto cada vez que hay una actualización)?
wp_magic_quotes()
se ejecuta la función ? No pude encontrar la ejecución en wp-core.Respuestas:
En pocas palabras, WP convierte la situación indeterminada (las comillas mágicas pueden o no estar habilitadas en la configuración del servidor) en determinadas (las comillas mágicas siempre están presentes y la configuración del servidor no importa).
En lugar de meterse con esto para todo el núcleo de WP, tiene mucho más sentido simplemente cortar barras en su código en sus propias variables, cuando lo necesite.
fuente
El comportamiento actual en WordPress es una mejor práctica basada en la compatibilidad de todos los sistemas y configuraciones de PHP. WordPress siempre ha normalizado la reducción de $ _GET, $ _POST, $ _COOKIE y $ _SERVER, y se espera que continúe haciéndolo.
Entonces, para extraer un parámetro POST o GET tenemos que escribir:
$value = stripslashes_deep($_POST['name']);
ofuente
Creo que los siguientes enlaces podrían ayudar:
fuente
Escribí una solución para tratar con estos arreglos superglobales en una pregunta similar en Stack Overflow.
Consiste en escribir un único "método de acceso" (get / set) para cada superglobal, cortando y pelando transparentemente. Entonces usarías, por ejemplo:
De esta manera, puede abstenerse de jugar aún más con las superglobales y disfrutar de una solución que funcionará "localmente" para su código, sin efectos secundarios. Para mí, fue la solución definitiva.
fuente
Recientemente tuve este problema, y finalmente lo descubrí. Básicamente estaba buscando en casi todos los sitios web citas mágicas en WordPress y ninguno de ellos me ayudó.
Así es como solucionarlo:
Ve a tu wp-settings.php
Busque wp_magic_quotes ();
Solo coméntalo y debería funcionar ahora
Esto funciona porque si miras antes de ese código verás:
Las citas de Magic que se agregan más adelante al usar wpdb es lo que está confundiendo a la mayoría de las personas, y resulta ser wp_magic_quotes (). Solo comentar eso evitará que las citas mágicas lo arruinen.
fuente