我有一个用户输入数据库信息的表单,可以单击使用AJAX将凭据发送到此页面的链接。我遇到的问题是,只要输入正确的主机名,脚本就会返回TRUE
。
是否有另一种方法来测试它,以便在用户名和密码无效时返回FALSE
?
$h = urldecode($_GET['h']);
$u = urldecode($_GET['u']);
$p = urldecode($_GET['p']);
$con = mysql_connect($h, $u, $p);
if(!$con){
echo 'Could not connect';
}
else{
echo 'Connected';
}
为了将来参考,问题是mysql用户表中的user =“Any”的条目。我删除了这些用户,脚本按预期工作。我更新了这篇文章,为任何有类似问题的人提供了一个屏幕截图。感谢Fabio below提出建议!
答案 0 :(得分:5)
这是因为mysql_connect在连接时使用了一些默认值,对于用户名应该是root
,如果我正确记住它,则使用密码的空字符串。或者可以是网络服务器运行的用户名。
这可能意味着您的数据库服务器接受无密码的根连接(来自Web服务器计算机),这非常危险。您应该查看数据库配置和用户列表。
从安全的角度来看,您的代码不是很安全,数据库凭据是以明文形式传输的,并且根据经验,最终用户不应输入数据库凭据(除非您正在编写类似PhpMyAdmin的工具)。