好吧,我不希望这是一个黑客建议问题,所以请不要对此投反对票。我在一家网上商店工作,我发现我们的一些旧PHP页面在用户名中容易受到SQL注入的攻击,我想知道有多糟糕。
我们使用PHP字符串将来自POST的用户输入嵌入到登录表单中。
$uname = $_POST['username'];
$pass = md5($_POST['pass']);
$sql = "SELECT * FROM users WHERE username='$uname' AND password='$pass' AND userlevel='user'";
...然后我运行查询。
现在,我不是SQL专家,我只是在phpMyAdmin上使用我能拼凑起来的东西。但我可以在没有用户名的情况下登录,而不是使用:
' OR 1 '我知道为了避开用户输入,我使用了mysql_real_escape_string。
我的问题是,这个代码有多容易受到攻击,是否有人可以登录到这个页面而不需要密码?我想也许他们不需要用户名,而只能暴力破解密码。但我不是SQL专家,我想知道是否可以使用一些技巧来对付我们。
我们使用MySQL。
我不需要任何关于输入验证的讲座,我知道这有多糟糕。我们应该做很多事情,比如页面上的超时和锁定,这样它就不会被暴力逼迫。
发布于 2009-08-17 13:32:09
“有人可以登录这个页面而不需要密码吗?”:是的,很简单。尝试使用用户名yourfavoriteadmin' OR 1; --。
May as well link this, since certainly somebody will...
https://stackoverflow.com/questions/1287965
复制相似问题