elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Seguridad (Moderador: r32)
| | |-+  prevenir injeccion sql usando hash y cifrado/compresión[php]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: prevenir injeccion sql usando hash y cifrado/compresión[php]  (Leído 3,739 veces)
flacc


Desconectado Desconectado

Mensajes: 854



Ver Perfil WWW
prevenir injeccion sql usando hash y cifrado/compresión[php]
« en: 30 Junio 2014, 04:38 am »

Hola, no se mucho de injección sql, pero por lo que he visto es que colocan comandos de sql en los campos input en los formularios y en la barra de direcciones para envió de información.

Lo que haría básicamente sería usar una tabla sql para autentificar usuarios, pero la información en la tabla estaría pasada por sha-1, eso para campos irreversibles como las contraseñas, para campos que necesitas revertir como el nombre de usuario, correo y demás usaría aes, ahora, se bien que el cambio y el peso de la información sería mas en relación a tener los datos en texto plano.

Quiero tener otras opiniones al respecto, no se si será el método mas óptimo tomando en cuenta el coste sobre todo teniendo en cuenta que si tienes 1000 registros deberías decencriptar o descomprimir los 1000 registros, pero según lo que he visto, me parece una alternativa fácil para mi de protegerme de injección de sql, obviando que la otra vía sería aprender mas y aplicar las técnicas necesarias.

¿Que opinan ustedes?

Saludos y gracias


En línea

Ari Slash


Desconectado Desconectado

Mensajes: 1.783



Ver Perfil WWW
Re: prevenir injeccion sql usando hash y cifrado/compresión[php]
« Respuesta #1 en: 30 Junio 2014, 06:15 am »

En un formulario POST no deberias codificar nada, si te refieres al envio del formulario, usaria HTTPS (certificado) que evite la lectura de esos datos a traves de la red, eso se aplica en el Servidor Web, no a traves de sql ni programacion.

Utilizando variables GET, no creo que seria correcto pasar un email o contraseña a traves de esto, aunque este bajo codificacion de un solo sentido.

Para evitar SQLI, utilizaria GET lo menos posible que se pueda y con variables de tipo numerico ojala, y una vez recibidas volver a convertirlas. Me ayudaria con variables de tipo SESSION, que despues liberaria. Tambien convertir todo tipo de datos del formulario en su tipo correspondiente.

En php, utilizar funciones como SPRINTF(). En .NET string.format() y convert. Filtrar las comillas simples y dobles, o agregar un Backslash (replace). En .net Web.config contiene unas instrucciones de seguridad.

Y por supuesto para autentificar un usuario, primero que nada una buena arquitectura de software, me refiero a una clase y el objeto instanciado en una variable de session. Y mas bien, con una buena arquitectura y diseño de software estas asegurando tu sistema.

Saludos



En línea

flacc


Desconectado Desconectado

Mensajes: 854



Ver Perfil WWW
Re: prevenir injeccion sql usando hash y cifrado/compresión[php]
« Respuesta #2 en: 30 Junio 2014, 09:47 am »

muchas gracias, me queda un poco mas claro, saludos
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: prevenir injeccion sql usando hash y cifrado/compresión[php]
« Respuesta #3 en: 1 Julio 2014, 06:11 am »

Trata de usar Sentencias Preparadas (parametrizadas) y evita concatenar variables enviadas por el usuario en tus enunciados SQL.

Por ejemplo:

Código
  1. $sql = "SELECT * FROM tabla WHERE numero =" . $numero;

Puede facilmente terminar así:

Código
  1. SELECT * FROM tabla WHERE numero = 1; DROP TABLE tabla;

Si haces sentencias preparadas lo que obtienes es un error porque el valor que estas pasando es " 1; DROP TABLE tabla;", no lo está concatenando al string, sino que está atando el parametro a ese valor en especifico.

Basicamente tu SQL se vería así usando sentencias preparadas:

Código
  1. SELECT * FROM tabla WHERE numero = "1; DROP TABLE tabla;"

http://php.net/manual/es/mysqli.quickstart.prepared-statements.php
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: prevenir injeccion sql usando hash y cifrado/compresión[php]
« Respuesta #4 en: 1 Julio 2014, 06:24 am »

el peso con aes es el mismo procesado que crudo, el peso está en tiempo de computo...

en lugar de cifrar todo es preferible algo como
Código:
$nombre_md5 = $_POST["nombre"];
$pass_md5 = $_POST["pass"];
select * from tabla where nombre_md5=$nombre_md5 and pass=$pass_md5
(este código es solo una simulación de mi idea)
en el codigo (asumiendo md5) tienes un segundo campo para los nombres (nombre_md5) donde esté codificado... por qué así? porque si entra una inyección el hash la destruirá y será seguro pasarla

ahí no entrará ninguna inyecciom
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
dantemc


Desconectado Desconectado

Mensajes: 2.003

:D


Ver Perfil
Re: prevenir injeccion sql usando hash y cifrado/compresión[php]
« Respuesta #5 en: 1 Julio 2014, 17:53 pm »

PAra prevenir una SQLi lo mejor es usar procedimientos almacenados

te recomiendo este link
https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet

Si usas POST o GET es indiferente al igual que si usas https o http pues los datos se visualizan en la capa 7.

Otra cosa es validar las entradas, es decir cuando recibas los datos por parte del usuario validar que contenga los datos que permites, esto es usar una lista blanca.

Por ejemplo si es un campo tipo nombre, solamente permitirás letras de la A a la Z, nada de símbolso como comillas que es lo que se usa generalmente para visualizar un fallo en la aplicación.

si es correo igual + @.

así vas validando las entradas y mediante procedimientos almacenados logras una seguridad muy decente para evitar estos ataques.



En línea

8-D
flacc


Desconectado Desconectado

Mensajes: 854



Ver Perfil WWW
Re: prevenir injeccion sql usando hash y cifrado/compresión[php]
« Respuesta #6 en: 2 Julio 2014, 10:35 am »

gracias a todos por las respuestas. Al final no opte por encritar ni comprimir nada, veré lo de las senencia preparadas y luegos procedimientos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Investigación de Compresión, Usando un Precompresor
Foro Libre
xxIv4nxx 0 1,607 Último mensaje 18 Junio 2010, 04:22 am
por xxIv4nxx
Tipo de cifrado de este hash?
Criptografía
chete 2 3,174 Último mensaje 17 Mayo 2014, 17:45 pm
por engel lex
Cifrado hash SHA1 en C
Programación C/C++
mester 2 2,289 Último mensaje 29 Mayo 2016, 17:50 pm
por AlbertoBSD
Mensaje borrado
Hacking
heroes11 2 2,563 Último mensaje 6 Diciembre 2016, 21:05 pm
por heroes11
Recomendación cifrado/hash.
Seguridad
Xyzed 8 6,689 Último mensaje 1 Mayo 2021, 06:22 am
por @XSStringManolo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines