Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
pregunta inyeccion
#1
hola que tal nada mas es un pregunta .... si yo utilizo filtrado de campos mediante expreciones regulares ... es decir que no permito que se envien caracteres extraños junto con $_POST ayuda en algo , en mucho a aumentar la seguridad contra la inyeccion SQL ?
#2
Claro q ayuda, pero para la inyección sql, si estás usando php, tienes una función q ayuda bastante: mysql_real_escape_string. Generalmente se suele usar esta función para controlar el sql-injection.
[Imagen: firmabp.jpg][Imagen: mineenlineaentregadispo.jpg]
WWW
#3
gracias mine.
tu sabes que probe mysql_real_escape_string() y me sale el siguiente eror :


Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@localhost (using password: NO) in C:\wamp\www\seguir\123123123.php on line 20

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\wamp\www\seguir\123123123.php on line 20
ave' como' sale esto ' ' ...



ha (por si a alguien le sirve) hay una funcion la cual es intval() que verifica que solo entren numeros y si la variable no contiene numeros y solo letras devuelve por valor "0" (cero)... es decir:
<?php
$_POST['id'] = 'a1"1"a'
$_POST['id'] == intval($_POST['id'])
echo $_POST['id']; // te va a devolver 11
?>

sAluddos
#4
Creo q no estás usando la función correctamente. Te dejo un ejemplo bien claro:
Código:
$conn = mysql_connect('host', 'usuario', 'password') or die(mysql_error());

$qry = sprintf("SELECT * FROM basedatos.lista WHERE usuario='%s' AND password='%s'",
            mysql_real_escape_string($user),
            mysql_real_escape_string($password));

$result = mysql_query($qry);

Con mysql_connect conectas a la base de datos.
con sprintf almacenas la cadena formateada con mysql_real_escape dentro de $qry. Fíjate q el primer %s será sustituído por la primera ocurrencia de mysql_real_escape y el segundo %s por el siguiente mysql_real_escape.
Las variables $user y $password serán definidas con lo q obtengas por $_POST.
Y por último recoge el resultado con mysql_query y lo manejas con mysql_fetch_assoc por ejemplo.

Prueba así q es mucho más cómodo.
[Imagen: firmabp.jpg][Imagen: mineenlineaentregadispo.jpg]
WWW
#5
me cuesta entenderlo :S debe ser po mi bajo conocimientos :?
Código:
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}


esto me lo hace automaticamente el DreamWeaver puede ser que trabaje automaticamente el tema ? (por lo quie alcanso a leer y entender creo que si , pero quiero estar seguro)
#6
Ese código debe funcionarte perfectamente.

Esa porción de código es una función a la q debes pasarle (como mínimo) los siguientes valores:
$theValue y $theType. Es decir, el valor de la variable q quieres prevenir de sql-injection y el tipo de datos q manejará la variable (si es un número, una cadena, etc...)

el resultado de la función será el valor de la variable procesada para evitar el sql-injection.

Un ejemplito:
Código:
$qry = sprintf("SELECT * FROM basedatos.lista WHERE usuario='%s' AND password='%s'",
            GetSQLValueString($user, "text"),
            GetSQLValueString($password, "text"));
y ahí tienes tu sentencia SQL dentro de $qry a salvo de sql-injection.
[Imagen: firmabp.jpg][Imagen: mineenlineaentregadispo.jpg]
WWW
#7
muchas gracias mine de apoco me va quedan un poco mas claro el lago Lengua


Posibles temas similares...
Tema Autor Respuestas Vistas Último mensaje
  pregunta DarkLnx 3 474 04-01-2013, 05:58 PM
Último mensaje: jebcalix
Exclamación Pregunta FUCKM4ST3R 5 619 31-07-2012, 10:07 PM
Último mensaje: pspero
  Inyección de código malicioso en páginas webs papi 17 1,901 28-05-2012, 10:35 AM
Último mensaje: bigposts
Exclamación Pregunta FUCKM4ST3R 6 741 11-03-2012, 04:18 PM
Último mensaje: Darkthink
  Pregunta sobre la función "preg_match" mauro770 8 1,752 10-12-2011, 05:20 PM
Último mensaje: Kevin9908
  inyeccion sql ultranet 18 1,874 13-06-2011, 10:32 PM
Último mensaje: Arrakis



Usuarios navegando en este tema: 1 invitado(s)