2

我的 java 代码有问题。我的大学老师让我使用“kiuwan”作为在线代码评估器,他在我的代码中发现了这个问题:

任何阅读源代码的人都可以看到硬编码的凭据(用户名/密码)。如果受此类硬编码凭据保护的资源很重要,则可能会危及系统安全。使用硬编码的凭据,更改很困难。如果目标帐户遭到入侵,并且该软件已部署在生产环境中,则需要更改代码,从而强制重新部署。请注意,源代码访问并非总是必要的:如果攻击者可以访问 JAR 文件,他/她可能会反汇编它以恢复明文密码。

它在我的 3 个查询中发现了这个问题:

public static final String CHECK_USER = "SELECT nome FROM utenti WHERE nome=? AND password=?";
public static final String INSERT_USER = "INSERT INTO utenti (nome, password) VALUES (?, ?)";
public static final String CHECK_USER_NAME = "SELECT nome FROM utenti WHERE nome=?";

我该如何解决?我以这种方式制作它们(从文本字段中获取信息)以进行登录并检查数据库。

谢谢大家!

4

1 回答 1

4

我不认为你的老师在谈论这些问题。我认为他/她正在谈论您的代码如何创建其数据库连接。他/她发现您已将数据库帐户的用户名和密码硬连线 到您的 Java 代码中。

一个简单的解决方案是从配置文件中读取数据库帐户详细信息……尽管现在您遇到了保持配置文件安全的问题。

(我为什么这么认为?因为您从老师那里引用的文字谈到从源代码或 JAR 文件中读取密码……而不是从数据库中读取密码。)


作为记录,将密码存储在数据库中也是一个坏主意。但这不是你的老师所说的。

避免在数据库中存储密码的技术更加困难。一个典型的解决方案是为密码创建一个种子加密哈希,并将其存储数据库中。但这意味着您无法恢复原始密码。如果您需要这样做,那么从安全角度来看,事情会变得更加“棘手”。

于 2017-01-16T10:41:06.863 回答