gpt4 book ai didi

java - 我的用户应该直接连接到数据库吗?如何将用户连接到数据库;

转载 作者:搜寻专家 更新时间:2023-10-30 21:56:00 25 4
gpt4 key购买 nike

首先我必须提到我对数据库还很陌生;

目前我设置了一个 MySQL 服务器,但我不确定如何将我的用户连接到数据库;我希望他们能够使用我的软件应用程序发送某些预定义查询 (SELECT/ALTER)。

目前我是怎么做的:我在第一个表单中要求输入用户名/密码。然后我使用默认用户名连接到数据库:“javaApp”/密码:“javaApp”然后我检查是否登录表单中给出的数据对应于 UserTable 中的用户;

有人可以提供有关如何更有效/更专业/更安全地执行此操作的见解吗?

也许是一些网络服务之类的?我真的没有任何想法。

专业软件开发人员如何解决这个问题?

提前致谢!

最佳答案

我不会直接公开数据库。我会在用户和数据库之间使用一个层,以便您可以控制他们查询数据库的方式以及他们可以检索的内容。

不要在代码中定义数据库连接。相反,使用 JNDI 资源(特别是如果您在应用程序服务器之上运行,例如为您管理 JNDI 资源的 Tomcat)。这会将您的代码与连接信息分离。此外,您可以使用 JNDI 连接池等功能,这将提高应用程序的性能(并且还将处理连接关闭等问题)。并发将由连接池处理。看这个Oracle article on JNDI resourcesthis one specific to Tomcat .

使用服务帐户,即用于向数据库验证应用程序的帐户。该帐户与访问您的应用程序的个人的用户帐户无关。限制服务帐户可以执行的操作。如果您只想通过应用程序读取数据,则将服务帐户限制为仅此(至少在开始时)。

您可以使用 ORM,例如Java 中的 Hibernate 将为您提供数据库的抽象 View 。如果您只有一张 table ,那对您来说可能太多了。在这种情况下,请使用称为 PreparedStatement 的东西。

您希望厌倦让用户定义自己的 SQL 语句。这会让您面临很多 SQL 攻击(寻找 SQL 注入(inject))。

永远不要在数据库中明文存储用户凭据。哈希值。

最后,看看这些awesome best practices .

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com