Spanish (SOLUCIONADO) ¿Cómo actualizar una BD desde un servidor MySql de forma segura?

Seneca

Active Member
Licensed User
Hola.

Hasta ahora he venido trabajando con una BD local, incrustada en la App. Pero ahora quiero incrustar la BD vacía, luego encriptarla y por último que sea la propia app la que descargue los registros desde un servidor (MySql).

Por lo que he leido, el riesgo está en que aunque para esta tarea se use un webservice, desde la app se ha de pasar al servidor un usuario y una contraseña, y que ambos datos puede ser extraídos de la app sin demasiada dificultad.

Me gustaría alguna sugerencia al respecto, buscando el método más seguro para impedir el acceso indeseado a la BD.

Gracias.
 

josejad

Expert
Licensed User
Longtime User
Hola Seneca:

Por lo que tengo entendido, la forma recomendada de acceder a una bd es JRDC2.
De esta forma, tienes por un lado mysql, por otro tu app y en medio hay un servidor b4j que hace de intermediario.
Las query’s, y el usuario y contraseñas de tu myql estan en ese servidor intermedio, por lo que no existe esa informacion en tu app haciéndola más s segura.
Creo que el tutorial de jRDC2 es bastante claro, pero lo he usado alguna vez, asi que si tienes alguna duda, podria echarte una mano.

Saludos,
 

Seneca

Active Member
Licensed User
Hola.

Había visto hilos sobre JDBC, en los que se indicaba los problemas de seguridad que puede este método. Pero había pasado por alto que en esos hilos también se recomendaba JRDC2.

Voy a investigarlo.

Gracias.
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Seneca, aparte de lo que te comenta José J. Hace años, cuando programaba en lenguajes compilados, si cogias una variable y le dabas el valor de la contraseña para no permitir el uso del programa (por ejemplo) cuando aún no habian salido las llaves externas o los discos (5 1/4":cool:), era muy facil encontrarla al debuguear desde código máquina, asi que se me ocurrió una idea "tonta" de que nadie pudiera trazar el programa y sacarlo sin mas, primero no ponia en una rutina el desbloqueo (no viene al caso) y segundo en vez de crear una contraseña asi:
B4X:
NombrePW = "12345"  '  :D para hacerlo facil

En varios sitios del programa iba creando la contraseña antes de utilizarla:

B4X:
NombrePW = Chr(49) ' numero 1 en ASCII

NombrePW = NombrePW & Chr(50) ' numero 2 en ASCII 

' y asi en varios sitios

Y por supuesto el nombre de variable no hacia referencia a nada de contraseña.

Al final todo lo rompes con paciencia, pero con esto al que lo queria hacer le complicabas bastante la vida, sin contar que creé un sistema de "encriptación" propio con AND y XOR y un checksum y entonces aun era mucho mas complejo descifrar la contraseña.


Saludos
 

Seneca

Active Member
Licensed User
Hola.

Buena y sencilla idea la que aportas @bgsoft. Como aún ando de pelea con JRDC2 y la app en la que trabajo no va a ser pública, creo que de momento voy a optar por tu propuesta.

Aún así, seguiré indagando este hilo sobre JRDC2 para futuras necesidades.

Por cierto, yo me entretenía en descifrar y anular protecciones, en los tiempos del Amstrad PC1512 con dos discos de 5 1/4", "debugueando" en ensamblador.:D

Tiempos aquellos !!
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Por cierto, yo me entretenía en descifrar y anular protecciones, en los tiempos del Amstrad PC1512 con dos discos de 5 1/4", "debugueando" en ensamblador.:D

Veo que somos casi de la misma "quinta", yo algo mayor.

De que crees tu que sabia que se podia desde código máquina o desde ensamblador saltarse las protecciones? :D , ademas muchos programadores cometian el fallo de ponerla en una subrutina, era tan facil como cambiar el salto a la subrutina por un jump (JMP) a la salida de la subrutina y programa desbloqueado :cool:
Si, que tiempos, y eramos jóvenes y guapos, ahora ya no somos tan... jovenes ;)

Saludos
 

josejad

Expert
Licensed User
Longtime User
Buenas puretillas, jeje (me incluyo).
Séneca, verás a poco que lo pruebes que JRDC2 no es muy complicado, y que puedes alojar el servidor B4J en el mismo servidor que tu MySQL y el acceso a las queries es muy sencillo, y que una vez que lo tengas implementado sólo tienes que ir agregando queries al fichero config de B4J. Puedes incluso meter comandos batch y ejecutar varias de una vez, lo cual facilita algunas cosas.
Te pongo el link a un ejemplito que puse de este tema.
https://www.b4x.com/android/forum/threads/jrdc2-add-mysql-master-detail.96897/

saludos,
 

Seneca

Active Member
Licensed User
Buenas puretillas, jeje (me incluyo).
Séneca, verás a poco que lo pruebes que JRDC2 no es muy complicado, y que puedes alojar el servidor B4J en el mismo servidor que tu MySQL y el acceso a las queries es muy sencillo, ......

Hola. Las pruebas las estoy haciendo directamente con un VPS, en vez de empezar con XAMP y, como tú me comentas, ya tengo instalado el servidor B4J. El test de comunicación me da OK, pero aún se me resisten las consultas. Pero voy a seguir leyendo hilos sobre el tema para conocer el proceso más a fondo.

En cuanto a tu ejemplo sobre Batch, me parece muy interesante. En cuanto consiga el acceso correcto al servidor lo probaré.

Gracias por la ayuda.
 

Seneca

Active Member
Licensed User
Web Service REST

Entiendo que quieres decir que este es otro método seguro para acceder a una BD en un servidor. He buscado en el foro pero no he encontrado nada sobre lo que me apuntas y una BD. Si supieses de algún tema al respecto, te agradezco el enlace.

Gracias.
 

Myr0n

Active Member
Licensed User
Longtime User
Hola a todos
Como se ha recomendado en todos los foros la manera mas segura es JRDC2 pero con un poquito mas de trabajo y un servidors con https se puede utilizar PHP pdo.
Aqui dejo un hilo para jdbcsql que para mi punto de vista se deberia utilizar en proyectos muy isolados y pequeños.
 

killiak

Member
Licensed User
Longtime User
JRDC2 es muy bueno, pero yo hago aplicaciones para empresas que tienen sitios web basicos, por eso me quedo con la recomendacion y los trabajos realizados por @rscheel JRDC2 solamente se puede usar en Servidores dedicados, incluso he tenido mala experiencia en Virtuales con montarle algo Java
 
Top