| ||||
| PDO e inyección SQL Si yo tengo una consulta con PDO asi:
Código MySQL:
Ver originalCopiar Tambien estoy evitando la inyección SQL como en named parameters ?
Código MySQL:
Ver originalCopiar Muchas gracias por sus respuestas.
__________________ Por que existe gente que no agradece despues de que se le ha brindado tiempo y ayuda ??? :: REGALENME CARMITA :: Ya pase los mil mensajes deberían darme regalo :) |
| ||||
| Respuesta: PDO e inyección SQL en esencia sí, PDO al preparar realiza escapado de variables, pero nada cuesta probar un poco, trata de agregar algo con comillas, si no falla la consulta y se ve la comilla en DB no tiene que preocuparse de ese aspecto
__________________ y Él dijo: ayúdate que yo te ayudaré El que busca, encuentra... maycolalvarez.com |
| ||||
| Respuesta: PDO e inyección SQL jeje muchas gracias por tu respuesta, imagínate que intente haciendo esto:
Código PHP:
Ver originalCopiar Y no me dejo, me toco hacer esto:
Código PHP:
Ver originalCopiar Según eso si evitaría la inyección SQL no ?
__________________ Por que existe gente que no agradece despues de que se le ha brindado tiempo y ayuda ??? :: REGALENME CARMITA :: Ya pase los mil mensajes deberían darme regalo :) |
| ||||
| Respuesta: PDO e inyección SQL bueno, en el caso de fechas, PDO te exige un objeto fecha (lógico es orientado a objetos), pero en el caso de cadenas si las escapa, eso quiere decir que PDO restringe por tipos, eso es muy apreciado en el caso de seguridad
__________________ y Él dijo: ayúdate que yo te ayudaré El que busca, encuentra... maycolalvarez.com |
| ||||
| Respuesta: PDO e inyección SQL Lo que pasa es que al usar ? como placeholder, PDO lo escapa y tu consulta queda así:
Código SQL:
Ver originalCopiar Tienes que entender que la idea de usar prepared statements, no es solamente la de escapar los carácteres, si no más bien lo que hace internamente PDO es mandar el query a tu BDD, compilar el query y luego esperar los valores de entrada. Es por eso que no se pueden poner funciones como NOW() ya que no hay optimización, en ese caso ponlo directamente en tu query:
Código SQL:
Ver originalCopiar La idea de usar prepared statements es de usarlos cuando necesites enviar variables de entrada o salida y tener la mayor optimización posible. Saludos. |
| ||||
| Respuesta: PDO e inyección SQL Muchas gracias por responder GatorV, pero volviendo a la pregunta inicial con cualquiera de las dos formas PDO me evita inyecciones SQL? Es que estube buscando y encontre en el foro un tema viejo pero se utiliza "named parameters", mi pregunta concreta es si utilizando "positional parameters" PDO también me evita inyección SQL ?
__________________ Por que existe gente que no agradece despues de que se le ha brindado tiempo y ayuda ??? :: REGALENME CARMITA :: Ya pase los mil mensajes deberían darme regalo :) |
| ||||
| Respuesta: PDO e inyección SQL O.o ahora si entendí, ahora se como funciona, es una excelente respuesta.... Como siempre GatorV te sobraste con esa explicación. Si PDO hace todo eso para evitar la inyección, entonces para que utilizar bindParam ? Es que leo y leo y busco y busco y no dicen la funcion real de bindParam Muchísimas gracias.
__________________ Por que existe gente que no agradece despues de que se le ha brindado tiempo y ayuda ??? :: REGALENME CARMITA :: Ya pase los mil mensajes deberían darme regalo :) |
| ||||
| Respuesta: PDO e inyección SQL No es que lo haga PDO, de hecho es un trabajo del RDBMS, aunque PDO trae una capa que emula los prepared statements si es que el RDBMS no soporta eso. bindParam, sirve para enlazar una variable (por referencia) hacía un prepared statement, te permite hacer cosas así:
Código PHP:
Ver originalCopiar O sea la variable queda enlazada por referencia, y sirve para poder también usar variables de entrada y salida en los stored procedures. Un ejemplo del manual:
Código PHP:
Ver originalCopiar Los prepared statements son muy usados sobre todo cuando tienes que hacer muchos inserts (en modo batch) ya que tienen el mejor rendimiento vs usar sql queries normales. Saludos. |
| ||||
| Respuesta: PDO e inyección SQL Perfecto, queda completamente aclarada mi duda. Nuevamente muchísimas gracias por la explicación.
__________________ Por que existe gente que no agradece despues de que se le ha brindado tiempo y ayuda ??? :: REGALENME CARMITA :: Ya pase los mil mensajes deberían darme regalo :) |