estoy haciendo algunas consultas en Zend Framework y me necesita para asegurarse de que no la inyección SQL es posible en el siguiente tipo de formatos. Puedo usar mysql_escape(obsoleto) y no hacer todo el trabajo. Si intento utilizar real_mysql_escape no será capaz de agarrar la conexión con la base de datos y no puedo encontrar cómo zend_filter podría resolver el problema.

La consulta que estoy haciendo (simplicado) tiene la siguiente sintaxes:

    $db = Zend_Registry::get('db'); 
    $select = "SELECT COUNT(*) AS num
                FROM message m
                WHERE m.message LIKE '".$username." %'";
    $row = $db->fetchRow($select);

¿Cuál es la mejor manera de evitar la INYECCIÓN SQL con este marco?

OriginalEl autor DFectuoso | 2009-03-28

3 Comentarios

  1. 17

    Fácil:

    $db->quote($username);

    Así:

       $username = $db->quote($username . '%');
       $select = 'SELECT COUNT(*) AS num
                                    FROM message m
                                    WHERE m.message LIKE ' . $username;
       $row = $db->fetchRow($select);
    cuando yo uso $db->cotización en una cadena que estoy insertando, pone comillas en la cadena incluso en el campo de base de datos. ¿Tengo que recortar después de cito, o estoy utilizando de forma incorrecta?

    OriginalEl autor karim79

  2. 1

    Cuando se trabaja con un modelo que puede utilizar:

    $bugs = new Bugs();
    $row = $bugs->fetchRow($bugs->select()->where('bug_id = ?', 1));

    OriginalEl autor Ben Bos

Dejar respuesta

Please enter your comment!
Please enter your name here