Las citas mágicas son una pregunta común para PHPer. Accidentalmente vi un artículo hoy, combinado con el Manual de PHP y sus respuestas, haré un resumen simple aquí.
En resumen, las cotizaciones mágicas escaparán automáticamente de los datos ingresados cuando se activen. Entre ellos, se escaparán todas las comillas simples ('), comillas dobles ("), barras invertidas y caracteres NULL (se agrega una barra invertida). De hecho, esta operación esencialmente llama a la función Addslashes.
¿Por qué usar comillas mágicas?
Cómodo y rápido
Los diseñadores de PHP imaginaron una programación rápida y cómoda desde el principio. Por ejemplo, al insertar en una base de datos, las comillas mágicas escaparán automáticamente de los datos, lo cual es muy conveniente.
Bueno para principiantes
Las citas mágicas pueden, hasta cierto punto, ayudar a los principiantes a evitar los riesgos de seguridad de los scripts. Por ejemplo, en código sin ninguna medida de protección, activar las comillas mágicas reducirá muchos riesgos, como los problemas de inyección. Por supuesto, el uso de este método por sí solo no puede evitar por completo estos problemas de seguridad.
"No tengo permiso para cerrarlo"
Obviamente, es posible que seas consciente de este problema, pero el espacio del host no está completamente bajo tu control.
¿Por qué no utilizar citas mágicas?
Portabilidad Ya sea que esta característica esté activada o no, afectará la portabilidad del script porque afecta nuestras operaciones posteriores de filtrado de datos.
Problemas de rendimiento Se escaparán todos los datos externos antes de recuperarlos, lo que sin duda aumentará los costos de tiempo de ejecución (y no es necesario escapar de todos los datos).
Causar confusión Como se mencionó anteriormente, no es necesario escapar de todos los datos. Una situación que puede surgir es cuando utiliza la función stripslashes "loco" para obtener datos sin escape.
PHP6 ya no es compatible
Los diseñadores de PHP aparentemente se dieron cuenta de su "error", por lo que lo dejaron obsoleto en PHP6.
Cómo desactivar las comillas mágicas
Según mi opinión, lo más confiable es usar el archivo de configuración php.ini para deshabilitar globalmente las comillas mágicas. Consulte el código siguiente
; Citas mágicas para datos entrantes GET/POST/Cookie.magic_quotes_gpc = Off; Citas mágicas para datos generados en tiempo de ejecución, por ejemplo, datos de SQL, de exec(), etc.magic_quotes_runtime = Off; Comillas mágicas estilo Sybase (escape ' con '' en lugar de ').magic_quotes_sybase = Desactivado Sin embargo, es posible que el servidor en línea no le permita modificar el archivo php.ini, por lo que puede usar el archivo .htaccess para desactivarlo y agregar el siguiente código
php_flag magic_quotes_gpc Desactivado Lo anterior puede Para el código portado, los datos deben permanecer consistentes independientemente de si magic_quotes está deshabilitado. Entonces el siguiente código puede ayudarte
<?phpif (get_magic_quotes_gpc()) {function stripslashes_deep($value) {$value = is_array($value) ?array_map('stripslashes_deep', $value) :stripslashes($value);return $ valor;}$_GET = array_map('stripslashes_deep', $_GET);$_POST = array_map('stripslashes_deep', $_POST);$_COOKIE = array_map('stripslashes_deep', $_COOKIE);$_REQUEST = array_map('stripslashes_deep' , $_REQUEST);}