¿Es posible la inyección SQL con POST?

La inyección Sql es posible si los parámetros se pasan a través de GET. Pero es posible a través de POST también. Si es así, ¿puede https prevenirlo?

Sí, es posible con $_POST así como con $_GET , $_COOKIE y $_REQUEST . HTTPS no lo protegerá en absoluto. Debe usar alguna función para protegerlo, por ejemplo mysql_real_escape_string o usar declaraciones preparadas .

Toda la comunicación del navegador web debe manejarse como “no confiable” . Otras técnicas en las que no puede confiar son Ajax , file uploads y JavaScript form validations (entre otros). Todos estos datos provienen directamente del navegador web y no deberían ser confiables antes de haberlos filtrado o validado los datos.

Lo único en lo que puede confiar es $_SESSION , siempre que SOLO $_SESSION datos validados en sus variables $_SESSION .

  1. Sí, puede SQL inyectar a través de POST. Cualquiera puede cambiar lo que se envía en las solicitudes POST (busque un complemento para Firefox llamado “hackbar”)
  2. No https no ayudará con esto porque no puede hacer nada contra los ataques de la capa de aplicación web. Solo previene ataques de hombre en el medio y sniffing.

Debería escapar de todos los datos enviados por el usuario, sin importar el método.

No, no hay diferencia entre estos dos métodos.

La inyección de SQL ocurre cuando usa la entrada proporcionada por el usuario en las sentencias de SQL sin desinfectarla. No importa si recibió los datos a través de GET o POST, o si fue encriptado. Lo que importa es lo que haces con la entrada después de que la tienes.

Nada puede protegerte excepto sanitizar tus entradas, y la única manera completamente segura de hacerlo es usar declaraciones preparadas. Esto es por supuesto una molestia, pero realmente no hay alternativa: si desarrolla un sitio web y es pirateado por inyección de SQL porque no usó declaraciones preparadas, es casi negligente como progtwigdor para esto.

La forma más simple que he encontrado en PHP de hacer esto hasta la fecha es usar el contenedor mysqli de Codesense . Es una clase ordenada, pequeña, que elimina gran parte de la molestia asociada con las declaraciones preparadas crudas, ha sido más que lo suficientemente sólida donde la he usado.

Usar este SQL preparado solo un poco más complicado que SQL directo, por lo que realmente no hay excusa para no hacerlo.

https no puede protegerte aquí. Filtrar tu entrada (s)