避免访问DB

时间:2017-02-20 22:32:07

标签: java sql-server android-studio jdbc

我使用JTDS jar将我的应用程序android与DB(SQL SERVER)连接在我的项目中(databaseName,user,password)在Class中的问题

ConnURL = "jdbc:jtds:sqlserver://" + **** + ";"
                + "databaseName=" +***** + ";user=" + **** + ";password=****"

是否有隐藏我的(databaseName,user,password)

的解决方案

如果有人反编译我的应用程序,它将有权访问数据库 我怎样才能避免这个大问题

1 个答案:

答案 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");