El 11/02/2016 a las 12:01, Luis Felipe Tabera Alonso escribió:
On Thursday 11 February 2016 07:33:51 alparkom . wrote:
Explicado de forma simple; si hago una conexión en Java, el archivo
.java tendrá los datos de conexión (en caso de usar MariaDB, se
debería escribir en el .java la dirección del servidor, el usuario de
MariaDB, la contraseña del mismo y el puerto usado)... entonces, que
pasa si descompila dicho el .class que genera Java?
Lo estás haciendo mal, si el programa tiene todos esos datos 'tal cual', te va
a dar igual el lenguaje de programación, compilado o no. Un usuario malicioso
podrá obtenerlos. ¿Quién se supone que tiene acceso a la BD? ¿Solo usuarios?
¿Solo el programa? El usuario/programa que acceda a la BD ¿Puede hacer con
ella lo que quiera? ¿debería poder?
Luis
Efectivamente Luís, es lo que he querido transmitirle, que aunque sea
compilado el programa, un usuario malicioso puede llegar hasta los
datos, por mucho que él haga, y que los esfuerzos tiene que centrarlos
en la base de datos.
Alparkom, he entendido perfectamente lo que quieres decir, desde un
principio. Creo que el que no lo ha comprendido bien eres tú. Por mucho
que hagas, se puede llegar a los datos. Existen formas de descompilar
programas compilados, como es C++.
La seguridad tienes que hacerla en la base de datos en el servidor, de
forma que el acceso sea por usuarios, para empezar. Cada instancia de la
aplicación, instaladas en distintos ordenadores, debes hacerla con
acceso de usuario y contraseña, el cuál es un usuario y contraseña
distinto al usuario y contraseña de la base de datos. Si algún usuario
malintencionado obtiene los datos de conexión de la bd, solo puedes
asegurar los datos haciendo copias de seguridad, por ejemplo, diarias.
El problema que planteas es hacer inaccesibles los datos de conexión
desde una aplicación de escritorio. Y la respuesta es que, por mucho que
hagas y quieras, si un usuario malintencionado con los conocimientos
necesarios quiere obtener los datos de conexión, lo va a hacer. Por eso
te digo que tienes que centrar la seguridad en la base de datos, en el
servidor, y realizar copias diarias de la base de datos.
Por otra parte, la accesibilidad no sólo depende del programador, sino
de que el lenguaje de programación, y más concrétamente la librería
gráfica que utilices, proporcione los métodos necesarios para lograr
este fin. Y en este sentido, java es de los lenguajes de programación
que crean más problemas de accesibilidad, y por lo que lo descarto para
software de escritorio. Genera problemas en sistemas Windows o Linux, a
este respecto, pero sin embargo Android utiliza este lenguaje y las
aplicaciones son accesibles, si se hacen bien, porque la interfaz
gráfica de usuario no es java.
Otra cuestión que tienes que tener en cuenta, es que ya uses python, C++
u otro lenguaje, para implementar una aplicación con interfaz gráfica de
usuario (esto es, con ventanas, botones, etc), tendrás que utilizar una
librería gráfica, ya sea GTK, QT, Wx, etc. Los lenguajes de programación
tienen sus bindings para poder usar dichas librerías. Así por ejemplo,
python tiene pygtk, para gek, pyqt, para qt, pywx, para wx, etc. Estas
librerías son paquetes complementarios que tienes que instalar, aparte
de las herramientas propias de python. Y cuando hablo de python, como en
el ejemplo, sucede lo mismo para otros lenguajes como C++, pues esto no
depende del lenguaje en sí.
---
El software de antivirus Avast ha analizado este correo electrónico en busca de
virus.
https://www.avast.com/antivirus