2010-01-22 12 views
10

Soy totalmente consciente de la aberración de Magic Quotes en PHP, cómo es malo y los evito como una plaga, pero ¿qué son magic_quotes_runtime? Desde php.ini:¿Qué es el tiempo de ejecución de las comillas mágicas en PHP?

Comillas mágicas para los datos generados en tiempo de ejecución, p. Ej. datos de SQL, de exec(), etc.

IS es algo que debería comprobar si en ON y se apaga mediante:

set_magic_quotes_runtime(false); 

frecuentemente es activada por defecto? Sé que está en desuso en 5.3.0 y eliminado en 6.0.0, pero como mi script admite 5.1.0+, me gustaría saber cómo manejar esto en PHP "heredado" (si es relevante).

Editar: Para aclarar las cosas, quiero salir ('Desactivar cotizaciones mágicas'); cuando las comillas Magic están en ON. ¡No estoy confiando en ellos!

Respuesta

6

Si magic_quotes_runtime está habilitado, la mayoría de las funciones que devuelven datos de cualquier tipo de fuente externa, incluidas las bases de datos y los archivos de texto, tendrán las comillas escapadas con una barra invertida. Si magic_quotes_sybase también está activado, se escapa una comilla simple con una comilla simple en lugar de una barra diagonal inversa.

http://www.php.net/manual/en/info.configuration.php#ini.magic-quotes-runtime

+0

Si el enlace contiene la respuesta, ¿por qué no solo escribir el enlace? – mck89

+7

@ mck89 Porque requiere que el usuario busque la solución, y los enlaces pueden cambiar, pero el texto publicado aquí no lo hará. (-1 eliminado) – Sampson

+0

Ok, me convenciste, esa es una buena motivación :) – mck89

0

Usted podría utilizar ini_get para comprobar su valor, como este:

ini_get('magic_quotes_runtime'); 

También usted debe envolver las llamadas a set_magic_quotes_runtime/get_magic_quotes_runtime en function_exists llamadas, al igual que:

if (function_exists('set_magic_quotes_runtime')) { 
set_magic_quotes_runtime(true/false); 
} 

Pero por supuesto, uno no debe confiar en las citas mágicas y sh Debería deshabilitarlos si es posible. Se este enlace por un par de razones por qué: http://www.php.net/manual/en/security.magicquotes.whynot.php

0

Si las comillas mágicas están activadas, php escapará automáticamente de las comillas que vienen en las variables POST o GET y las saltará automáticamente al extraer datos de una base de datos, por ejemplo.

Si usa cosas como addslashes(), mysql_escape_string() o mysql_real_escape_string() con comillas mágicas, terminará con comillas de doble escape.

La razón por la cual es malvada es la misma razón por la cual addslashes() y mysql_escape_string() son malvadas, porque no captura todos los métodos posibles para poner una comilla en una cadena. Te da una falsa sensación de seguridad al pensar que ya no tienes que preocuparte por escapar de las citas cuando en realidad todavía lo haces.

Además, como si escaparse de las cuerdas ya no fuera suficiente de un PITA, ahora debe verificar si las comillas mágicas están activadas o desactivadas antes de intentar escapar o desbloquear una cadena para evitar el doble escape.

+1

Sin preguntar qué son las "citas mágicas", lo sé demasiado bien. Lo que estoy preguntando es ¿qué son "magic_quotes_runtime"? ¿Qué datos se escapan con esta configuración? – AlexV

+0

@AlexV - Las dos configuraciones funcionan en conjunto. el GPC uno es para datos POST, GET y COOKIE, el tiempo de ejecución es para más o menos todo lo demás (archivos, mysql, etc.). Si su pregunta es "¿QUÉ EXACTAMENTE es 'todo lo demás'?" entonces alexb tiene la respuesta en su enlace. –

+0

Es enlace mck89 no alexb uno :) – AlexV

Cuestiones relacionadas