Autor Tema: [DUDA] - SQL Inject  (Leído 423 veces)

Desconectado MEJORENHO

  • PHPer@ Fijo
  • ***
  • Mensajes: 204
  • Karma: 3
  • Sexo: Masculino
    • Ver Perfil
    • Beeme
[DUDA] - SQL Inject
« en: 28 de Abril de 2011, 02:11:34 am »
Hola chicos, estoy empezando y, por que no decirlo, soy nulo en esto.

He creado mi sistema de usuarios, para hacer un portal deportivo y quisiera proteger la página contra todo tipo de ataques maliciosos.

La duda es que buscando, he encontrado que cambiando los $_POST y los $_GET por $_REQUEST, la función es la misma y protege contra los ataques de tipo SQL Inject. ¿Esto es cierto?.

Otra duda es la utilización de mysql_real_escape_string(), dado que lo he intentado utilizar y me da errores. TXL en un post de este foro puso que esta era su utilización:
$sql = mysql_query("SELECT * FROM usuarios WHERE id = ' " . mysql_real_escape_string($_GET['id']) . " ' ");
Lo he intentado usar y no me funciona, la duda es si esto funciona con mysql_fetch_array() delante del mysql_query.

He cambiado las url, no dejando los archivos al descubierto excepto en index, es decir, que la dirección quedase como www.miweb.com/?d=contenido1

Otra duda es si, ¿hay que proteger todos los tipos de consultas?, es decir, Select, Update, Delete, etc...).
¿Hay alguna forma más de proteger mis contenidos?

Gracias de antemano, y perdonad si este post no va aquí.

Comunidad PHPeros

[DUDA] - SQL Inject
« en: 28 de Abril de 2011, 02:11:34 am »

Desconectado Physlet

  • PHPero Experto
  • *****
  • Mensajes: 822
  • Karma: 41
  • Sexo: Masculino
  • Todo es posible con esfuerzo, dedicación e interés
    • Ver Perfil
    • PanamaDev
Re:[DUDA] - SQL Inject
« Respuesta #1 en: 28 de Abril de 2011, 03:47:26 am »
mysql_real_escape_string() lo que hace es filtrar una cadena de caracteres para hacer más seguras las consultas.

1. Para usar mysql_real_escape_string() debes tener una conexión de MySQL abierta.
2. Hasta donde tengo entendido, $_REQUEST contiene lo que haya en $_GET, $_POST y $_COOKIE. No lo hace más seguro, es igual.
3. No es "proteger todo tipo de consultas", sino proteger todo tipo de entradas a tu aplicación. Todo lo que entra, es recomendable que le hagas un filtro con htmlspecialchars() y luego con el mysql_real_escape_string() (esto segundo solo si esa entrada será usada en una consulta, de lo contrario estarías gastando recursos innecesarios).

Desconectado MEJORENHO

  • PHPer@ Fijo
  • ***
  • Mensajes: 204
  • Karma: 3
  • Sexo: Masculino
    • Ver Perfil
    • Beeme
Re:[DUDA] - SQL Inject
« Respuesta #2 en: 28 de Abril de 2011, 11:11:09 am »
Gracias por la respuesta, mirare haber como lo aré jejeje.

Te doy un Karma +.

Por mi podeis cerrar el tema.