(PHP 4 >= 4.3.0, PHP 5)
mysql_real_escape_string -- Escapa caracteres especiales de una cadena para su uso en una sentencia SQL
La cadena a escapar
El recurso de conexión mysql
Esta función escapará todos los caracteres especiales en la cadena_no_escapada, tomando en cuenta el juego de caracteres actual de la conexión, de tal modo que sea seguro usarla con mysql_query(). Si desea insertar datos binarios, debe usar ésta función.
mysql_real_escape_string() llama a la función de la biblioteca MySQL mysql_escape_string, la cual coloca barras invertidas antes de los siguientes caracteres: NULL, \x00, \n, \r, \, ', " y \x1a.
Es necesario usar siempre (con algunas excepciones) esta función para asegurarse de que los datos sean seguros antes de enviar una consulta a MySQL. Si tiene habilitada la directiva magic_quotes_gpc, y está trabajando con datos que provienen del usuario, debe usar stripslashes() primero sobre sus datos. Si sus datos provienen de otras fuentes y tiene habilitada la directiva magic_quotes_runtime, deberá también usar stripslashes() con sus datos. De no ser así, quedará abierto a ataques de inyección SQL. He aquí un ejemplo:
Ejemplo 2. Un ejemplo de un ataque de inyección SQL
La consulta enviada a MySQL:
¡Esto permitiría que cualquiera iniciara una sesión sin una contraseña válida! Usando mysql_real_escape_string() con cada variable se previene esto.
La consulta será ejecutada correctamente ahora, y los ataques de inyección no darán resultado. |
Nota: mysql_real_escape_string() no escapa % ni _. Éstos son comodines en MySQL si se combianan con LIKE, GRANT, o REVOKE.
Vea también mysql_client_encoding(), addslashes(), stripslashes(), y las directivas magic_quotes_gpc y magic_quotes_runtime.