camposer techie blog_ cómo realizar queries con hql (una sugerencia para evitar sql injection)

4
7/18/2019 Camposer Techie Blog_ Cómo Realizar Queries Con HQL (Una Sugerencia Para Evitar SQL Injection) http://slidepdf.com/reader/full/camposer-techie-blog-como-realizar-queries-con-hql-una-sugerencia-para-evitar 1/4 Este blog contiene soluciones que he encontrado a problemas tecnológicos varios. Sobre todo me h servido de referencia cuando estos se presentan de nuevo y espero -que estando disponible en la W pueda serle de ayuda a otros. Otra cosa que me he propuesto es abordar las soluciones, en la medi de lo posible, en español... Un pequeño grano de arena que pretende reducir la brecha tecnológica.  domingo, 11 de julio de 2010 Publicado por camposer en 15:02 Cómo realizar queries con HQL (una sugerencia para evitar SQL injection) Cuando trabajamos con Hibernate y deseamos realizar queries con el lenguaje de consultas propio, HQL, recomiendo trabajar con parámetros a la forma de sentencias preparadas (prepared statements). Por ejemplo: @Override  public Usuario login(Cuenta cuenta) { Query query = this.getEntityManager().createQuery("from Usuario where cuenta.login = :login and cuenta.password = :password "); query.setParameter("login", cuenta.getLogin()); query.setParamete r("password", cuenta.getPassword()); List result = query.getResultList(); if (result.size()==0){ return null; } return result.get(0); } En el código mostrado arriba se puede ver como los parámetros "login" y "password" son pasados en diferido y no concatenados directamente en el string, esto puede salvarle la vida contra ataques de SQL injection. No estoy seguro de que además obtenga ganancias en tiempo de ejecución, para llamadas posteriores, porque estas sentencias sean preparadas y almacenadas en el catálogo del RDBMS. Recomendar esto en Google Ingeniero de Software y Emprendedor  ACERCA DE MI  Alt + Camposer Techie Blog 21 RedES Develop your Dream Internet Developing SEO Venezuela Enlaces interesantes Colabora con Wikipedia Google Friend Connect Miembros (36) Más » ¿Ya eres miembro? Iniciar sesión Seguidores Suscribirse a 0  Más Siguiente blog» Crear 01/05/2013 11:59

Upload: irene-kelly

Post on 10-Jan-2016

227 views

Category:

Documents


2 download

DESCRIPTION

Camposer Techie Blog_ Cómo realizar queries con HQL (una sugerencia para evitar SQL injection)

TRANSCRIPT

7/18/2019 Camposer Techie Blog_ Cómo Realizar Queries Con HQL (Una Sugerencia Para Evitar SQL Injection)

http://slidepdf.com/reader/full/camposer-techie-blog-como-realizar-queries-con-hql-una-sugerencia-para-evitar 1/4

Este blog contiene soluciones que he encontrado a problemas tecnológicos varios. Sobre todo me h

servido de referencia cuando estos se presentan de nuevo y espero -que estando disponible en la Wpueda serle de ayuda a otros. Otra cosa que me he propuesto es abordar las soluciones, en la medi

de lo posible, en español... Un pequeño grano de arena que pretende reducir la brecha tecnológica.

 

domingo, 11 de julio de 2010

Publicado por camposer en 15:02

Cómo realizar queries con HQL (una sugerencia para

evitar SQL injection)Cuando trabajamos con Hibernate y deseamos realizar queries con el lenguaje de

consultas propio, HQL, recomiendo trabajar con parámetros a la forma de sentencias

preparadas (prepared statements). Por ejemplo:

@Override

 public Usuario login(Cuenta cuenta) {

Query query = this.getEntityManager().createQuery("from Usuario where cuenta.login =

:login and cuenta.password = :password ");

query.setParameter("login", cuenta.getLogin());

query.setParamete r("password", cuenta.getPassword());

List result = query.getResultList();

if (result.size()==0){

return null;

}

return result.get(0);

}

En el código mostrado arriba se puede ver como los parámetros "login" y "password"

son pasados en diferido y no concatenados directamente en el string, esto puede

salvarle la vida contra ataques de SQL injection. No estoy seguro de que además

obtenga ganancias en tiempo de ejecución, para llamadas posteriores, porque estas

sentencias sean preparadas y almacenadas en el catálogo del RDBMS.

Recomendar esto en Google

Ingeniero de Software y

Emprendedor 

 ACERCA DE MI

 Alt + Camposer Techie Blog

21 RedES

Develop your Dream

Internet Developing

SEO Venezuela

Enlaces interesantes

Colabora con Wikipedia

Google Friend Connect

Miembros (36) Más »

¿Ya eres miembro? Iniciar sesión

Seguidores

Suscribirse a

0   Más Siguiente blog» Crear

01/05/2013 11:59

7/18/2019 Camposer Techie Blog_ Cómo Realizar Queries Con HQL (Una Sugerencia Para Evitar SQL Injection)

http://slidepdf.com/reader/full/camposer-techie-blog-como-realizar-queries-con-hql-una-sugerencia-para-evitar 2/4

Entrada más reciente Entrada antiguaPágina principal

Suscribirse a: Enviar comentarios (Atom)

Comentar como: 

2 comentarios:

mingo 11 de julio de 2010 18:56

Otra forma que en algun momento me fue util y muy sencilla para evitar SQL injection

(no estaba utilizando Hibernate), es utilizar los prepared statements de esta forma:

aqui les presento un ejemplo muy sencillo donde queremos realizar un insert:

public void insertar_telefono(String telefono, int id, String tipo){

String sql ="INSERT INTO BECOFILE.JOB_TELEFONO(NUMERO_TELEFONO,ID_COLABORADOR,TIPO_TELEFONO) VALUES (?,?,?)";

try {

PreparedStatement stmt = con.prepareStatement(sql);

stmt.setString(1, telefono);

stmt.setInt(2,id);

stmt.setString(3, tipo);

stmt.executeUpdate();

} catch (SQLException e) {

log.error("el insert ha fallado ",e);

}

}

Como podran observar en el metodo de arriba queremos declaramos un String sql, el

cual va a contener el insert, lo extraño que van a observar son los signos de

interrogacion, los cual seran reemplazados por cuando hagamos el realicemos los set,

por ejemplo: stmt.setString(1, telefono); esto indica que la variable "telefono" va a ser 

puesta donde esta el primer signo de interrogacion y de esta forma se evitan SQL

injection de una manera sencilla si no estas trabajando con hibernate y estas haciendo

algo muy sencillo.

Responder 

camposer  11 de julio de 2010 19:16

Gracias mingo, definitvamente la mejor forma de trabajar cuando lo hacemos con JDBC

puro...

Responder 

 Anuncios Google

► JDBC en Java

► SQL Class

 

2012 (7)

2011 (18)

2010 (62)

diciembre (1)

noviembre (1)

octubre (4)

agosto (13)

 julio (43)

Barajitas premiadas (#13) -

MySQL Sandbox

PHP Auto Conf 

Cómo hacer que un script s

ejecute al iniciar/rei...

Barajitas premiadas (#12) -

Chat p2p Netcat cifrado co

OpenSSL

Barajita premiada (#11) -

ejecutar un comando pa

Barajitas premiadas (#10) -countries, states, cit...

Barajitas premiadas (#9) -

netcat

La navaja suiza

Barajitas premiadas (#8) -

port forwarding

SOA y Symfony

Barajitas premiadas (#7) -

eclipse.ini

Creando un proyecto en

Symfony con PortgreSQdesd...

Barajitas premiadas (#6) - r 

Barajitas premiadas (#5) -

Syntax Highlighter 

Barajitas premiadas (#4) -

Debian Backports

Cómo incluir archivos JS d

de otros

Cómo trabajar OO en

JavaScript

Barajitas premiadas (#3) -/dev/null

Barajitas premiadas (#2) -

Cómo configurar un Trust

en Java para conexi...

 Archivo del blog

01/05/2013 11:59

7/18/2019 Camposer Techie Blog_ Cómo Realizar Queries Con HQL (Una Sugerencia Para Evitar SQL Injection)

http://slidepdf.com/reader/full/camposer-techie-blog-como-realizar-queries-con-hql-una-sugerencia-para-evitar 3/4

Cómo realizar queries con HQL

(una sugerencia para...

Barajitas premiadas (#1) - find

Palabras necias

Cómo reasignar (resetear) la

clave de un usuario e...

Shell script de respaldos

Cómo configurar SSH para

realizar conexiones sin c...

Cómo funciona SSH

Cómo utilizar Git sobreHostmonster o Bluehost

Cómo interconectar 

PostgreSQL con Oracle

Cómo convertir archivos

SHAPE a MySQL

Cómo convertir archivos

SHAPE a PostgreSQL

(PostGI...

Cómo crear y trabajar con

procesos batch en Symfon...

Cómo exportar e importar basesde datos Oracle

Cómo copiar toda una carpetavía HTTP usando WGET ...

Cómo borrar tablas de un

esquema en Oracle

Cómo insertar fechas en Oracle

con formato variabl...

Cómo migrar una BD de

MySQL a Oracle

Cómo crear usuarios en

MySQL (rápidamente)

Librería de PHP para enviar 

correos (phpmailer)

Shell script para capturar datos

de un puerto seri...

Shell script para saber si

tenemos conexión a Inte...

Creando un live CD con Debian

Cómo exportar e importar bases

de datos Oracle

Optimizando tablas InnoDB enMySQL

Shell script para capturar datos de

un puerto serial en Linux

ReplicaciónMaestro->Esclavo1->Esclavo2 en

mySQL

Cómo insertar fechas en Oracle

con formato variable

Entradas populares

01/05/2013 11:59

7/18/2019 Camposer Techie Blog_ Cómo Realizar Queries Con HQL (Una Sugerencia Para Evitar SQL Injection)

http://slidepdf.com/reader/full/camposer-techie-blog-como-realizar-queries-con-hql-una-sugerencia-para-evitar 4/4

 

01/05/2013 11 59