Historias
Slashboxes
Comentarios
 
Este hilo ha sido archivado. No pueden publicarse nuevos comentarios.
Mostrar opciones Umbral:
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.
  • Re:Pólvora mojada

    (Puntos:1)
    por Chaves (20317) el Viernes, 09 Marzo de 2012, 10:58h (#1303717)
    ( http://chav.es/ | Última bitácora: Viernes, 29 Junio de 2012, 11:02h )
    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...
    [ Padre ]
  • Re:Pólvora mojada

    (Puntos:2)
    por Inconexo (20311) el Viernes, 09 Marzo de 2012, 16:00h (#1303737)
    ( http://press.asqueados.net/ | Última bitácora: Jueves, 06 Marzo de 2014, 11:47h )
    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.

    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
    [ Padre ]