首先我得说我对数据库还不太熟悉;
目前我建立了一个mysql服务器,我不确定如何连接我的用户到数据库;
我希望他们能够使用我的软件应用程序发送某些预定义的查询(select/alter)。
目前的做法是:我在第一个表单中请求用户名/密码,然后使用默认用户名“javaapp”连接到数据库,然后检查登录表单中给出的数据是否与usertable中的用户对应;
有人能提供一个更有效/更专业/更安全的方法吗?
也许是网络服务之类的?我真的没有任何想法。
专业软件开发人员是如何解决这个问题的?
提前谢谢!

最佳答案

我不会直接公开数据库。我将在用户和数据库之间使用一个层,这样您就可以控制他们如何查询数据库以及检索什么。
不要在代码中定义数据库连接。相反,使用jndi资源(特别是当您运行在app服务器上时,例如tomcat,它为您管理jndi资源)。这将使代码与连接信息分离。此外,您还可以使用jndi连接池之类的东西,这将提高应用程序的性能(还将处理连接关闭之类的事情)。并发性将由连接池处理。请参见Oracle article on JNDI resourcesthis one specific to Tomcat
使用服务帐户,即将用于向数据库验证应用程序的帐户。该帐户与访问你的应用程序的个人的用户帐户无关。限制服务帐户可以执行的操作。如果你只想通过应用程序读取数据,那么将服务帐户限制在这个范围内(至少在开头)。
您可以在java中使用orm,例如hibernate,它将为您提供数据库的抽象视图。不过,如果你只有一张桌子的话,那就太多了。在这种情况下,请使用preparedstatement。
您希望厌倦让用户定义自己的sql语句。这会导致很多sql攻击(寻找sql注入)。
永远不要在数据库中的clear中存储用户凭据。散列值。
最后,看看这些awesome best practices

关于java - 我的用户应该直接连接到数据库吗?如何将用户连接到数据库;,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50120695/

10-12 00:12
查看更多