我的Java代码出现问题。我在大学老师要我用“kiuwan”在线代码评估,他发现我的代码这个问题:[Java] [SQL]查询的硬编码用户名和密码
硬编码的凭据(用户名/密码)是对任何人阅读源代码可见。 如果受此类硬编码证书保护的资源很重要,则可能会危及系统安全。 使用硬编码凭据时,更改很困难。如果目标帐户受到影响,并且在生产中部署了软件 ,则需要更改代码,这会强制重新部署。 请注意,访问源代码并非总是必要的:如果攻击者可以访问JAR文件,他/她可以拆卸它以恢复密码。
它发现我的3个querys这个问题:
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查询是如何构建的,他/她提到了你的连接凭证,很可能你已经使用了带有明确用户名和密码信息的硬编码数据库连接,这被称为坏习惯编码选择。像你这样的例子可以是http://stackoverflow.com/questions/11634379/username-password-etc-hardcoded-into-program-how-to-pick-them-up-from-a-file – Hayra
选中此项: - http://stackoverflow.com/questions/12937641/handling-passwords-used-for-auth-in-source-code –