Inyecciones sql

  • Autor Autor victorvu
  • Fecha de inicio Fecha de inicio
V

victorvu

Beta
Programador
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola, estoy trabajando en una web donde hice un sistema de mensajes y quiero saber que onda con las inyecciones.
Trabajo con php y mysql.

Mi duda viene xq siempre pense y lei que las inyecciones solo se pueden hacer en SELECT pero x ahi me dicen q tmb se puede en INSERT y no se si es verdad, si alguno sabe algo
 
Si haces select es porque la consulta esta abierta , entonces puedes hacer insert.
 
Las inyeciones pueden seleccionar, editar, eliminar, etc. Por eso es necesario validar siempre la informacion que recibas sea via get o post. En la documentacion de php se habla un poco acerca de eso, date una vuelta por hay y te dan recomendaciones. Yo te recomendaria que no utilizes el antiguo mysql sino PDO. Tiene muchas funciones interesantes.
 
Te aconsejo que filtres TODO el contenido tanto en la parte que envia el cliente como la que se recibe al servidor.
Además de preocuparte por las SQLinjection tienes que prevenir otros ataques que pueden vulnerar tu aplicación. Tales como Remote/Local File Inclusion, XSS y CSRF entre otros...

Aqui te dejo un articulo sobre algunos tips para securizar tu sistema en php Seguridad en PHP ~ Security By Default

Además te recomiendo utilizar el modulo MySQLi en php How to Use PHP Improved MySQLi extension (and Why You Should)

Espero que te sirva 🙂

Un saludo
 
Hola, estoy trabajando en una web donde hice un sistema de mensajes y quiero saber que onda con las inyecciones.
Trabajo con php y mysql.

Mi duda viene xq siempre pense y lei que las inyecciones solo se pueden hacer en SELECT pero x ahi me dicen q tmb se puede en INSERT y no se si es verdad, si alguno sabe algo

podrias testear si es vulnerable usando: "sqliHelper 2.7", ejemplo tenes:
Insertar CODE, HTML o PHP:
www.pepe.com/?id=1
colocas esa url en el soft y comenzara a testear a ver si te pueden hackear!
 
Las inyeciones pueden seleccionar, editar, eliminar, etc. Por eso es necesario validar siempre la informacion que recibas sea via get o post. En la documentacion de php se habla un poco acerca de eso, date una vuelta por hay y te dan recomendaciones. Yo te recomendaria que no utilizes el antiguo mysql sino PDO. Tiene muchas funciones interesantes.

Uso Mysqli no mysql 😀

Te aconsejo que filtres TODO el contenido tanto en la parte que envia el cliente como la que se recibe al servidor.
Además de preocuparte por las SQLinjection tienes que prevenir otros ataques que pueden vulnerar tu aplicación. Tales como Remote/Local File Inclusion, XSS y CSRF entre otros...

Aqui te dejo un articulo sobre algunos tips para securizar tu sistema en php Seguridad en PHP ~ Security By Default

Además te recomiendo utilizar el modulo MySQLi en php How to Use PHP Improved MySQLi extension (and Why You Should)

Espero que te sirva 🙂

Un saludo

Me sirvio bastante 😛
PD: ya estoy usando mysqli

podrias testear si es vulnerable usando: "sqliHelper 2.7", ejemplo tenes:
Insertar CODE, HTML o PHP:
www.pepe.com/?id=1
colocas esa url en el soft y comenzara a testear a ver si te pueden hackear!

Cuando termine todo el codigo lo pruebo, gracias

Buscando encontre que utilizando prepared statments eliminas toda forma de inyeccion en las consultas (no se hasta donde).

Para guardar los mensajes en la base de datos los limpio con esta funcion:

PHP:
<?php
function limpiar($string)                                            
{
 $string = htmlentities($string);
 $string = strip_tags($string);
 $string = stripslashes($string);
 $string = addslashes($string);
 return $string;
}

Implementando lo nombrado sumado a que la web puede ser vista solo con javascript activado que me estaria faltando?
 
No, la mejor opcion para evitar Inyeccion SQL es utilizar en la sentencia mysqli_real_escape_string(), Injection SQL se pueden producir en UPDATE, DELETE, SELECT, INSERT INTO, ALTERT TABLE, etcc
 
No, la mejor opcion para evitar Inyeccion SQL es utilizar en la sentencia mysqli_real_escape_string(), Injection SQL se pueden producir en UPDATE, DELETE, SELECT, INSERT INTO, ALTERT TABLE, etcc

El problema de usar mysqli_real_escape_string() en insert, update es que insertas valores raros como la \

Si usas prepared statments insertas los datos tal cual son escritos sin peligro, creo que es mejor asi! :topsy_turvy:
 
No, en la base de dato se insertan como normales, lo que pasa que lo muestra con \ para que no inyecten.

PHP recomienda mysqli_real_escape_string
 
Atrás
Arriba