Evita Los Ataques De Inyección De SQL Php Java

Páginas: 16 (3867 palabras) Publicado: 1 de noviembre de 2015
Evita los ataques de inyección de SQL

1 de 11

http://www.genbetadev.com/seguridad-informatica/evita-los-ataques-de...

Regístrate







Respuestas

NO TE PIERDAS »

Curiosidades

Trabajar como desarrollador

Open Source

Frameworks

Actualidad

Desarrollo web

|

Entra

o conéctate con

Más »

Herramientas de desarrollo

Eventos para Desarrolladores
PUBLICIDAD

Evita los ataques deinyección de SQL
08 de noviembre de 2012 | 12:39 CET

Pedro Gutiérrez
Google+
@PedroXitrus
Editor en Genbetadev

PUBLICIDAD

Comentarios 30



Los ataques informáticos son nuestro pan de cada día, y entre ellos destaca últimamente los ataques
de inyección de SQL, por este motivo tenemos que prevenirnos al máximo de estos ataques que
cada vez se está extendiendo más su uso por la facilidad que tiene deponerlo en marcha cualquier
persona aunque no tenga experiencia en SQL, simplemente sabiendo la cadena de texto adecuada
(que puede conseguir en algún foro de esta temática).
En otro artículo comenté el aumento de ataques de este tipo y lo costoso que era oponerse a los
ciberataques, además de poner un ejemplo funcional de como hacer una inyección SQL y ahora os
voy a explicar que medidas básicaspodemos tomar para evitar estos ataques.

Como evitar estos ataques
El principal problema de estos ataques es que si dejamos que el usuario del programa introduzca
libremente caracteres sin control ninguno (mediante formularios, por ejemplo) puede llegar a
aprovecharse de las comillas (simples y dobles con las que declaramos cadenas de texto o
strings).
Os voy a poner un pequeño ejemplo de unaconsulta SQL a la que le mandamos dos parámetros

Sigue a Genbetadev

(independientemente del lenguaje, ya que cualquier lenguaje que use bases de datos SQL podría ser

Newsletter:

victima de estos ataques), que mediante el lenguaje que elijamos escribirá tal cual le mandemos los
parámetros.
#El usuario y la contraseña que mandamos son "Error", y se haría esta consulta:
SELECT * FROM `Usuarios` WHERE`user`='Error' AND `pass`='Error'
#Y en este ejemplo veremos el resultado de la inyección del SQL
SELECT * FROM `Usuarios` WHERE `user`='Error' AND `pass`='' UNION SELECT * FROM `Usuarios`
WHERE `id` = '1'
Utilizamos cookies propias y de terceros para mostrarle publicidad relacionada con sus preferencias según su navegación. Si continua navegando consideramos que
acepta el uso de cookies. Másinformación >

19/07/2015 11:07 a.m.

Evita los ataques de inyección de SQL

2 de 11

http://www.genbetadev.com/seguridad-informatica/evita-los-ataques-de...

Regístrate

|

Entra

o conéctate con

transformarse en \" que así interpretará como texto la comilla y no como el carácter que cierra o
abre el una texto en la consulta, pero según el lenguaje se puede implementar de distintas formas y
algunasson automáticas y más optimizadas.

PHP
En PHP tenemos varias formas de hacerlo, entre ellas para bases de datos MySQL tenemos la
función mysql_real_escape_string, que añadiremos en las variables que introducimos en la
consulta.
$respuesta=mysql_query("SELECT * FROM `Usuarios` WHERE
`user`='".mysql_real_escape_string($name)."' AND
`pass`='".mysql_real_escape_string($password)."'")

.NET
En .NETevitaremos la inyección en SQL Server (con C#) estableciendo el tipo de parámetro como
literal con SqlDbType.VarChar.
SqlConnection con = new SqlConnection(_connectionString);
SqlCommand cmd = new SqlCommand("SELECT * FROM Usuarios WHERE user=@user AND pass=@pass",
con);
/* Convertimos en literal estos parámetros, por lo que no podrán hacer la inyección */
cmd.Parameters.Add("@user",SqlDbType.VarChar, 32).Value = user;
cmd.Parameters.Add("@pass", SqlDbType.VarChar, 64).Value = password;

O también podríamos usar AddWithValue de una forma ligeramente similar a la anterior:
using( SqlConnection con = (acquire connection) ) {
con. Open();
using( SqlCommand cmd = new SqlCommand("SELECT * FROM Usuarios WHERE user=@user
AND pass=@pass", con) ) {
/* Convertimos también en literales los...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Php y sql
  • Inyección Sql
  • Inyección de SQL
  • INYECCIÓN SQL
  • Inyeccion sql
  • Evitar y Prevenir Ataques DDOS
  • Conecciones de php con sql
  • PHP, my sql

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS