Foros del Web » Programación para mayores de 30 ;) » Java »

Encriptar Conexion SQL

Estas en el tema de Encriptar Conexion SQL en el foro de Java en Foros del Web. Hola a todos estoy trabajando en JAVA y estoy utilizando el SQL SERVER DRIVER para conectarme a SQL ya tengo un sistema hecho en Java, ...
  #1 (permalink)  
Antiguo 23/01/2011, 22:03
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Encriptar Conexion SQL

Hola a todos estoy trabajando en JAVA y estoy utilizando el SQL SERVER DRIVER para conectarme a SQL ya tengo un sistema hecho en Java, lo que quisisera saber es si saben una manera de como poder encriptar la Conexion SQL yo tengo este codigo para conectarme

Código C#:
Ver original
  1. protected Connection Con = null;
  2.     protected PreparedStatement Pst = null;
  3.     protected CallableStatement Cst = null;
  4.     protected CachedRowSetImpl Crs = null;
  5.     protected ResultSet Rs = null;
  6.  
  7.     protected final String SERVER = "ServerSQL";
  8.     protected final String DATABASENAME = "nameBD";
  9.     protected final String USER = "admin";
  10.     protected final String PASSWORD = "admin";
  11.     protected final String SECURITY ="false";
  12.  
  13. public void Open()
  14.     {
  15.         try
  16.         {
  17.             Con = null;
  18.             String URL = "jdbc:sqlserver://" + SERVER + ";databaseName=" + DATABASENAME + ";integratedSecurity=" + SECURITY;
  19.             Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  20.             DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver());
  21.             Con = DriverManager.getConnection(URL,USER,PASSWORD);
  22.         }catch(ClassNotFoundException ex){
  23.             JOptionPane.showMessageDialog(null,"Error En El Controlador SQL:" + ex.getMessage(),"Aviso",1);
  24.         }catch(SQLException ex){
  25.             JOptionPane.showMessageDialog(null,"Error al conectarse al SQL Server 2008:" + ex.getMessage(),"Aviso",1);
  26.         }catch(Exception ex){
  27.             JOptionPane.showMessageDialog(null,"Error:" + ex.getMessage(),"Aviso",1);
  28.         }
  29.     }

es decir ENCRIPTAR el envio del USUARIO y el PASSWORD para evitar alguna INJECCION o que entren o se conecten a mi BD sacando esta informacion
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #2 (permalink)  
Antiguo 24/01/2011, 07:34
Avatar de jhonmelguizo  
Fecha de Ingreso: enero-2008
Ubicación: Medellín - Colombia
Mensajes: 264
Antigüedad: 16 años, 3 meses
Puntos: 6
De acuerdo Respuesta: Encriptar Conexion SQL

Código JAVA:
Ver original
  1. import java.io.UnsupportedEncodingException;
  2. import javax.crypto.Cipher;
  3. import javax.crypto.IllegalBlockSizeException;
  4. import javax.crypto.SecretKey;
  5.  
  6. /**
  7.  *
  8.  * @author http://www.exampledepot.com/egs/javax.crypto/desstring.html
  9.  */
  10. public class DesEncrypter {
  11.     Cipher ecipher;
  12.     Cipher dcipher;
  13.  
  14.     DesEncrypter(SecretKey key) {
  15.         try {
  16.             ecipher = Cipher.getInstance("DES");
  17.             dcipher = Cipher.getInstance("DES");
  18.             ecipher.init(Cipher.ENCRYPT_MODE, key);
  19.             dcipher.init(Cipher.DECRYPT_MODE, key);
  20.  
  21.         } catch (javax.crypto.NoSuchPaddingException e) {
  22.         } catch (java.security.NoSuchAlgorithmException e) {
  23.         } catch (java.security.InvalidKeyException e) {
  24.         }
  25.     }
  26.  
  27.     public String encrypt(String str) throws IllegalBlockSizeException {
  28.         try {
  29.             // Encode the string into bytes using utf-8
  30.             byte[] utf8 = str.getBytes("UTF8");
  31.  
  32.             // Encrypt
  33.             byte[] enc = ecipher.doFinal(utf8);
  34.  
  35.             // Encode bytes to base64 to get a string
  36.             return new sun.misc.BASE64Encoder().encode(enc);
  37.         } catch (javax.crypto.BadPaddingException e) {
  38.         } catch (IllegalBlockSizeException e) {
  39.         } catch (UnsupportedEncodingException e) {
  40.         } catch (java.io.IOException e) {
  41.         }
  42.         return null;
  43.     }
  44.  
  45.     public String decrypt(String str) {
  46.         try {
  47.             // Decode base64 to get bytes
  48.             byte[] dec = new sun.misc.BASE64Decoder().decodeBuffer(str);
  49.  
  50.             // Decrypt
  51.             byte[] utf8 = dcipher.doFinal(dec);
  52.  
  53.             // Decode using utf-8
  54.             return new String(utf8, "UTF8");
  55.         } catch (javax.crypto.BadPaddingException e) {
  56.         } catch (IllegalBlockSizeException e) {
  57.         } catch (UnsupportedEncodingException e) {
  58.         } catch (java.io.IOException e) {
  59.         }
  60.         return null;
  61.     }
  62. }

Lo que puedes hacer es encriptar todo el string de conexión o si prefieres cada una de las propiedades de tu clase, creas un método que encripte y uno para desencriptar, cómo se usa:

Importas en la clase que vayas a instanciar:
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;

Código JAVA:
Ver original
  1. //---------------------------------------
  2. try {
  3.         // Generate a temporary key. In practice, you would save this key.
  4.         // See also Encrypting with DES Using a Pass Phrase.
  5.         SecretKey key = KeyGenerator.getInstance("DES").generateKey();
  6.  
  7.         // Create encrypter/decrypter class
  8.         DesEncrypter encrypter = new DesEncrypter(key);
  9.  
  10.         // Encrypt
  11.         String encrypted = encrypter.encrypt("Don't tell anybody!");
  12.  
  13.         // Decrypt
  14.         String decrypted = encrypter.decrypt(encrypted);
  15.  
  16.         javax.swing.JOptionPane.showMessageDialog(null, encrypted);
  17.         javax.swing.JOptionPane.showMessageDialog(null, decrypted );
  18.  
  19.         } catch (Exception e) {
  20.         }

Espero te sirva, saludos...
  #3 (permalink)  
Antiguo 24/01/2011, 08:11
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Encriptar Conexion SQL

solo una consulta que tan factible es utilizar este metodo de encriptacion existe una manera de que otro usuario o otro programador pueda sacar la contraseña o conexion a mi servidor, con este codigo:

Código Java:
Ver original
  1. SecretKey key = KeyGenerator.getInstance("DES").generateKey();

estoy diciendo que necesariamente necesito esta clave para encriptar y desencriptar verdad, que tan segura viendo siendo esta clave para evitar cualquier caso de que otra persona entre a mi BD
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #4 (permalink)  
Antiguo 24/01/2011, 09:03
Avatar de jhonmelguizo  
Fecha de Ingreso: enero-2008
Ubicación: Medellín - Colombia
Mensajes: 264
Antigüedad: 16 años, 3 meses
Puntos: 6
Sonrisa Respuesta: Encriptar Conexion SQL

Cita:
Iniciado por Dradi7 Ver Mensaje
estoy diciendo que necesariamente necesito esta clave para encriptar y desencriptar verdad, que tan segura viendo siendo esta clave para evitar cualquier caso de que otra persona entre a mi BD
La seguridad de tu aplicación y conexiones seguras no dependen únicamente de si se encripta o no el código, depende de tu estructura y arquitectura, métodos publicos, privados, herencias entre otras variantes las cuales pueden ser vulnerables.

Seguramente existen más formas.

Saludos...
  #5 (permalink)  
Antiguo 24/01/2011, 10:38
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Encriptar Conexion SQL

no en cuanto mi infraestructura del aplicativo y la arquitectura eso si lo tengo bien claro pero has de saber bien que obteniendo la cadena de conexion de mi BD podria tener acceso a toda las tablas y las BD pudiendo manejarlo talves a su antojo me referiria la seguridad solo a la conexion a la BD que tan segura es o como hacer la manera de q la conexion sea segura
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #6 (permalink)  
Antiguo 24/01/2011, 12:13
 
Fecha de Ingreso: noviembre-2006
Mensajes: 56
Antigüedad: 17 años, 5 meses
Puntos: 1
Respuesta: Encriptar Conexion SQL

Hola, el controlador JDBC de Microsoft SQL Server incluye funciones para cifrar la conexión mira aquí: http://technet.microsoft.com/es-es/l...SQL.90%29.aspx

En el código fuente de la aplicación no se debe incluir el usuario y contraseña en la URL de conexión, en especial si la aplicación es de escritorio o se debe entregar el código compilado, aquí tienes varias sugerencias: http://msdn.microsoft.com/es-es/libr...ql.100%29.aspx

Un Saludo.
__________________
http://garza.eu5.org/

Etiquetas: conexion, encriptar, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:53.