Esto me ha hecho pensar... y a lo mejor podríais aclarármelo:
Si los colegas de Zend dicen, en la documentación que "Hay que usar siempre esta función antes de mandar una query a Mysql"... ¿Por qué no cogen, y modifican la función "mysql_query" para que, interna y transparentemente, haga esto?
Es que leer cómo escribías que "mysql_escape_string" no valía, que hay que usar "mysql_REAL_escape_string" me ha parecido casi un chiste, ñapa sobre ñapa...
¿Por qué no haces que tu función de lanzar queries sea segura, en vez de crear otra función, molestarte en escribir y mantener la documentación, decir que hay que usarla "siempre" y tal? métela por defecto, leches...
De acuerdo en lo del nombre de la función. Supongo que la motivación de crear una nueva "real" que reemplace la antigua, es porque realmente tiene un comportamiento diferente en algunos casos. Sustituir el comportamiento rompe la compatibilidad hacia atrás.
Lo de no ponerlo por defecto en el mysql_query por otro lado sí tiene su sentido. Y es que no tienes que escapar toda la consulta, sino simplemente los datos que vengan por entrada de usuario.
porque se escaparían también las comillas de 'nacional' y eso no sería correcto.
Ten en cuenta que el objetivo de mysql_real_escape_string es impedir la inyección sql, precisamente previniendo que lo que devuelve se pueda interpretar como órdenes mysql.
-- Asqueados [asqueados.net]: mas politica, informatica y payasadas que nunca
Re:Pólvora mojada
(Puntos:1)( http://chav.es/ | Última bitácora: Viernes, 29 Junio de 2012, 11:02h )
Si los colegas de Zend dicen, en la documentación que "Hay que usar siempre esta función antes de mandar una query a Mysql"... ¿Por qué no cogen, y modifican la función "mysql_query" para que, interna y transparentemente, haga esto?
Es que leer cómo escribías que "mysql_escape_string" no valía, que hay que usar "mysql_REAL_escape_string" me ha parecido casi un chiste, ñapa sobre ñapa...
¿Por qué no haces que tu función de lanzar queries sea segura, en vez de crear otra función, molestarte en escribir y mantener la documentación, decir que hay que usarla "siempre" y tal? métela por defecto, leches...
Re:Pólvora mojada
(Puntos:2)( http://press.asqueados.net/ | Última bitácora: Jueves, 06 Marzo de 2014, 11:47h )
Lo de no ponerlo por defecto en el mysql_query por otro lado sí tiene su sentido. Y es que no tienes que escapar toda la consulta, sino simplemente los datos que vengan por entrada de usuario.
Por poner un ejemplo, esto:
$producto = mysql_real_escape_string($_REQUEST['producto']);
$sql = "select id from PRODUCTOS where producto=$producto and categoria='nacional'";
$res = mysql_query($sql);
Sería correcto, si no he cometido algún fallo por tener el PHP oxidado. Pero, el siguiente código no funcionaría bien:
$producto = $_REQUEST['producto'];
$sql = "select id from PRODUCTOS where producto=$producto and categoria='nacional'";
$res = mysql_query(mysql_real_escape_string($sql));
porque se escaparían también las comillas de 'nacional' y eso no sería correcto.
Ten en cuenta que el objetivo de mysql_real_escape_string es impedir la inyección sql, precisamente previniendo que lo que devuelve se pueda interpretar como órdenes mysql.
Asqueados [asqueados.net]: mas politica, informatica y payasadas que nunca