camposer techie blog_ cómo realizar queries con hql (una sugerencia para evitar sql injection)
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