Tag: sprint

Seguridad PHP I: Querys seguras con sprintf

by Desendoll on Jun.11, 2009, under PHP, Seguridad

Sprintf no es propiamente de MySQL, pero si que se utiliza para ofrecernos mayor seguridad a nuestras consultas. Sprintf no nos soluciona todos los problemas de seguridad en MySQL, pero nos hace mas “fuerte” nuestro PHP y junto su hermano gemelo printf, nos ayudara a mostrar un código mas seguro.

Ej de consulta insegura donde nos viene dadas la variable $ids:

$sql = ‘DELETE FROM tabla WHERE id = ‘ . $ids; ( ej. alguien pondría $ids=’1 OR id != 0′;)

Si alguien consigue poner lo que le plazca en este código, nos puede borrar toda la tabla. En canvio si hacemos:

$sql = sprintf(”DELETE FROM tabla WHERE id = %d”, $ids);

ZAS, sprintf te acaba de salvar la vida, la dignidad y posiblemente tu trabajo!! Porque?, porque cualquier cadena que se entre tan solo sera interpretado como un entero. Tenga en cuenta que aunque el intruso pueda poner qualquier numero, usted tendrá que agregar otra clausula en WHERE para que no se eliminen entre “ellos”.

Hemos puesto el ejemplo con una cadena MySQL, pero podria ser en un echo directo, modificando lo por un printf evitaríamos intrusiones ejecución.

Tipos de datos

  • % – El argumento no es obligatorio.
  • b – Un entero, y el resultado es presentado como un numero binario.
  • c – Un entero, y el resultado es presentado en código ASCCI.
  • d- Un numero, pero como un numero decimal (con signo).
  • e- Es tratado como notación científica (ej.1.2E +2)
  • u- Un numero, decimal sin signo.
  • f / F- Numero coma flotante (diferente presentación con min. o may.)
  • o- Entero, presentado como un octal
  • s- Un String
  • x- entero, y es presentado como un hexadecimal en minusculas
  • X- Lo mismo que x, pero con mayúsculas.

Por ultimo, no menos importante, sprintf y printf apoyan las funciones dentro de sus sentencias, así pues, podemos mejorar nuestra consulta añadiendo %d", mysql_real_escape_string($ids));
Seguiré agregando temas de seguridad en MySQL, porque sigo viendo muchos errores.

4 Comments :, , , more...

Visita nuestros amigos!

Unos amigos muy recomendables ...