Plexinium
Agosto 01, 2010, 03:29:43 *


Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias:
 

Páginas: [1]   Ir Abajo
  Imprimir  
Autor Tema: Mètodos para evitar SQL Injection  (Leído 284 veces)
0 Usuarios y 1 Visitante están viendo este tema.
polin
Super Moderador
Asesino en serie
*****

Agradecimientos: 18
Desconectado Desconectado

Sexo: Masculino
Mensajes: 1286



WWW
« : Abril 12, 2009, 04:20:46 »

Para darle algo de trabajo a los Admin. xD este tema será para publicar mètodos de para evitar el SQL Injection.

NORMAS:
Solo se aceptan preguntas y nuevos mètodos.
No se aceptan agradecimientos.

Mètodo sacado de foros del web.
Citar
# Función para evitar ataques SQL injection y XSS
function limpiar_sql($value){
    $value = trim(htmlentities($value)); // Evita introducción código HTML
    if (get_magic_quotes_gpc()) $value = stripslashes($value);
    $value = mysql_real_escape_string($value);

$carac= array(":", "/", "\", "  ", ";", "%", "$", "=", "|");
$value = str_replace($carac, "", $value);

return $value;

En línea

Entra a esta página y mira las mejores recetas de Nicaragua Click aquí




Lo que una mente crea... Otra lo destruye
ABIGOR
Fresco
*

Agradecimientos: 0
Desconectado Desconectado

Mensajes: 33


« Respuesta #1 : Febrero 25, 2010, 07:24:50 »

Donde pongo ese codigo?
En línea
polin
Super Moderador
Asesino en serie
*****

Agradecimientos: 18
Desconectado Desconectado

Sexo: Masculino
Mensajes: 1286



WWW
« Respuesta #2 : Febrero 26, 2010, 05:46:38 »

Es una funcion. Luego la usas asi:

$mivariable limpiar_sql($_POST['user']);

saludos
En línea

Entra a esta página y mira las mejores recetas de Nicaragua Click aquí




Lo que una mente crea... Otra lo destruye
n3wb13
Fresco
*

Agradecimientos: 7
Desconectado Desconectado

Sexo: Masculino
Mensajes: 131


Lo dificil se hace, lo imposible se intenta.


« Respuesta #3 : Marzo 01, 2010, 04:23:11 »

La SQL Injection, es uno de los errores más común, hay hasta webs del gobierno con este simple fallo, no soy defacer, va en contra de mis principios eticos, pero es algo básico...


Código:
SELECT * FROM


El fallo de este codigo es el "*" que por esa alguien puede llegar a joder tu web...


La solución sería cambiarlo por:
Código:
SELECT cualquiercosa FROM

Si quitamos la * y lo sustimos por un nombre mas concreto el bug quedaría corregido.


Al igual q se puede utilizar esto:

Código:
<?php
    
include "config.inc.php";
    include 
"funcionesdb.inc.php";
    
//CONECTAR A LA BASE DE DATOS
    
$conexion=conexion($servidor,$usuario,$contrasegna);

    
//SELECCIONAMOS UNA BB EN EL SERVIDOR
    
$bd=eligedb($basedatos,$conexion);

    
//VARIABLES
    
$login=$_POST["login"];
    
$pass=$_POST["pass"];
    
$email=$_POST["email"];
    
$nombre=$_POST["nombre"];
    
$apellidos=$_POST["apellidos"];
    
$sexo=$_POST["sexo"];
    
$dia=$_POST["dia"];
    
$mes=$_POST["mes"];
    
$anio=$_POST["anio"];
    
$municipio=$_POST["municipio"];
    
$provincia=$_POST["provincia"];
    
$pais=$_POST["pais"];
    
$fechaNacimiento=$anio."-".$mes."-".$dia;

    
//COMPROBAR NOMBRES
    
$login=strip_tags($login);
    
$pass=strip_tags($pass);
    
$email=strip_tags($email);
    
$nombre=strip_tags($nombre);
    
$apellidos=strip_tags($apellidos);

    
//INSERTAR DATOS
    
$sql=sprintf("insert into tblusuarios (usuario,pass,email,nombre,apellidos,sexo,fechaNacimiento,pais,provincia,municipio,tipoUsuario,fechaRegistro,avatar) values ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s',now(),'avatares/default.jpg')",
        
mysql_real_escape_string($login),mysql_real_escape_string($pass),mysql_real_escape_string($email),
    
mysql_real_escape_string($nombre),mysql_real_escape_string($apellidos),mysql_real_escape_string($sexo),
    
mysql_real_escape_string($fechaNacimiento),
    
mysql_real_escape_string($pais),mysql_real_escape_string($provincia),mysql_real_escape_string($municipio),1);
    
$resultado=mysql_query($sql,$conexion);
    if (
$resultado)
        
header('Location: registroCorrecto.php');
    else
        
header('Location: registroFallido.php');
    
mysql_close($conexion);
?>


El codigo puede variar segun la costumbre de cada quien, lo importante es la logica del mismo, tiene principalmente tres funciones:

strip_tags <-- quita todas las etiquetas html
sprintf <-- que te compone una cadena
mysql_real_escape_string <-- Escapa caracteres especiales de una cadena para su uso en una sentencia SQL osea que te quita todas las ' o " etc etc.

osea, una te quita todas las etiquetas html, y las otras dos te quita todos los caracteres especiales para que no puedas ingectar SQL (poner cosas como 'a' or 1=1 ') que en una pagina no preparada te podria sacar todo el listado de usuarios con sus contraseñas y todo  Tongue

ese codigo es sencillito y es para proteccion de sql injeccion y, si entran será por otro lado.

slds y buena iniciativa del tema, asi cada quien comparte sus metodos.
En línea

Entra a esta página y mira las mejores recetas de Nicaragua Click aquí




"Un hacker NO es akel que usa troyanos y xploits, Un Hacker NO es akel que hace deface y los publica para impresionar, Un hacker BUSCA EL CONOCIMIENTO, NO LA DESTRUCCION Y LA FAMA".
Páginas: [1]   Ir Arriba
  Imprimir  
 
Ir a:  



Plexinium Team

Powered by SMF 1.1.11 | SMF © 2006-2007, Simple Machines LLC
Debu Theme - Sefa
Página creada en 0.194 segundos con 18 consultas.