【发布时间】:2017-01-16 10:36:54
【问题描述】:
我的 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=?";
我该如何解决?我以这种方式制作它们(从文本字段中获取信息)以进行登录并检查数据库。
谢谢大家!
【问题讨论】:
-
实际上你的老师没有提到你的 sql 查询的结构,他/她提到的你的连接凭据,很可能你已经使用了带有明确用户名和密码信息的硬编码数据库连接,这个被称为编码选择的不良做法。像你这样的例子可能是stackoverflow.com/questions/11634379/…