inyeccion SQL y como evitarla....

Iniciado por nobo, 16 Febrero 2012, 22:42 PM

0 Miembros y 1 Visitante están viendo este tema.

nobo

Como puedo saber si mi pagina tiene inyeccion SQL y como  puedo hacer para evitarlo??

Es decir como puedo dar algo mas de seguridad a mi web y ponerlo algo mas dificil?

Gracias a todos.


#!drvy

Bueno, si no filtras los datos que recibes en las consultas

Por ejemplo:

Código (php) [Seleccionar]
$result = mysql_query("SELECT * FROM usuarios WHERE nombre='".$_GET['nombre']."'");

O lo filtras de manera cutre
Ejemplo:
Código (php) [Seleccionar]
$_GET['nombre'] = str_replace('OR 1=1','',$_GET['nombre']);

Seguramente tendrás un sqli.

Para evitarlo puedes hacer uso de funciones como
Código (php) [Seleccionar]
mysql_real_escape_string($_GET['nombre']);

Y otras cosas como por ejemplo, si sabes que vas a recibir una variable numerica (entero), usar (int) que convierte cualquier carácter a entero.
Ejemplo:
Código (php) [Seleccionar]
$_GET['valor'] = (int)$_GET['valor'];


Saludos

nobo

Y... Claro... xDDD Tengo que revisarme toooooooooooooooooodo el codigo.... xD

pfffffffffffff....

EFEX

Cita de: nobo en 17 Febrero 2012, 00:01 AM
Y... Claro... xDDD Tengo que revisarme toooooooooooooooooodo el codigo.... xD

pfffffffffffff....

O haces eso o cada mes al sitio te lo tumban abajo por algún grupo de arabia saudita.
GITHUB 

s00rk

Cita de: EFEX en 17 Febrero 2012, 14:08 PM
O haces eso o cada mes al sitio te lo tumban abajo por algún grupo de arabia saudita.

Tambien podria crear otro archivo llamado nose anti.php, algo asi:

Código (php) [Seleccionar]

<?php
foreach($_POST as $k => $v)
{
    
$_POST[$k] = mysql_real_escape_string($v);
}

foreach(
$_GET as $k => $v)
{
    
$_GET[$k] = mysql_real_escape_string($v);
}


Y ya si su pagina principal incluye a las otras como modulos o asi puede poner en su pagina principal un
include_once("anti.php");
y ya, sino agregar eso a cada pagina y ya con eso podria funcionar n_n (creo hehehe)

nobo

No es mala idea ^^ Me gusta esa propuesta :D

Tambien podria pasar el codigo por aqui xD

Y tanto se aburren los de arabia?

K1ll1ng M4ch1n3

Una vez que hayas escapado las variables para evitar las inyecciones, puedes usar SqlMap para verificar que la página ya no es vulnerable.

Tienes un tutorial básico en http://amperis.blogspot.com/2008/11/rulando-sqlmap.html

Saludos.

nobo

#7
Perfecto eso queria... Saber si habia algun scaner "fiable" ;)

Muchas gracias !! :D

EDITO:

Me da esto:

[01:03:42] [WARNING] User-Agent parameter 'User-Agent' is not dynamic
[01:03:43] [WARNING] Cookie parameter 'PHPSESSID' is not dynamic
[01:03:47] [WARNING] GET parameter 'cat' is not injectable with 0 parenthesis
[01:03:49] [WARNING] GET parameter 'cat' is not injectable with 1 parenthesis
[01:03:53] [WARNING] GET parameter 'cat' is not injectable with 2 parenthesis
[01:03:55] [WARNING] GET parameter 'cat' is not injectable with 3 parenthesis

  • shutting down at: 01:03:55

Zomtrixbiesroot

Amig@s perdón que me meta en el tema pero estoy metiéndome en la POO y de paso en la seguridad en php :D

entonces leyendo el tema me intereso saber que hace mysql_real_escape.

yo tengo esta consulta:

$sql = "select * from noticias where id_noticia=".mysql_real_escape_string($_GET['id']);

Ahi que estaria evitando?

Cuando es recomendable usar dicha función y que hace?

nobo

Para filtrar los datos que se reciben.

O eso creo