我使用JTDS jar将我的应用程序android与DB(SQL SERVER)连接在我的项目中(databaseName,user,password)在Class中的问题
ConnURL = "jdbc:jtds:sqlserver://" + **** + ";"
+ "databaseName=" +***** + ";user=" + **** + ";password=****"
是否有隐藏我的(databaseName,user,password)
的解决方案如果有人反编译我的应用程序,它将有权访问数据库 我怎样才能避免这个大问题
答案 0 :(得分:1)
如果应用程序将充当客户端应用程序:
更好的方法是不让应用程序直接与DB通信。
相反,让服务器作为Web服务运行,作为应用程序和数据库之间的中间层。这样,只有服务器可以访问数据库中的数据,并且应用程序只能与服务器定义的API进行交互,这可以防止恶意SQL语句之类的事情。
如果该应用是服务器端应用:
最好避免将数据库信息硬编码到应用程序中(因为更改应用程序需要重新编译应用程序)。
为避免直接在应用程序代码中编码数据库信息,您可以将数据库信息存储在外部.properties文件中,例如:
db.server=myserver.com
db.name=myDB
db.user=user1
db.pass=pass1
然后,您可以单独分发您的应用程序和属性文件,或加密属性文件。
然后在运行时加载属性文件:
Properties dbProps = new Properties();
InputStream is = new FileInputStream("database.properties");
prop.load(is);
String connURL = "jdbc:jtds:sqlserver://" +
dbProps.getProperty("db.server") +
";databaseName=" + dbProps.getProperty("db.name") +
";user=" + dbProps.getProperty("db.user") +
";password=" dbProps.getProperty("db.pass");