好的,我不想让这个问题成为一个黑客建议问题,所以请不要因此而投反对票。我在一个网络商店工作,发现我们一些旧的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。
请不要给我任何有关输入验证的讲座,我知道这有多糟糕。我们应该做很多事情,比如在我们的页面上设置超时和锁定,以防止被暴力破解。