我的代码对SQL注入有多脆弱?

tko*_*tan 4 php mysql security

好吧,我不希望这是一个黑客建议问题,所以请不要为此投票.我在网上商店工作,我发现一些旧的PHP页面容易受到用户名中的SQL注入攻击,并想知道有多糟糕.

我们使用PHP字符串在登录表单上嵌入来自POST的用户输入.

$uname = $_POST['username'];
$pass  = md5($_POST['pass']);
$sql = "SELECT * FROM users WHERE username='$uname' AND password='$pass' AND userlevel='user'";
...
Run Code Online (Sandbox Code Playgroud)

然后我运行查询.

现在,我不是SQL专家,我只是在phpMyAdmin上使用我可以拼凑的内容.但我能够在没有用户名的情况下登录,而不是使用:

' OR 1 '
Run Code Online (Sandbox Code Playgroud)

我知道要逃避用户输入,我使用mysql_real_escape_string.

我的问题是,这段代码有多脆弱,有人可以登录这个页面而不需要密码吗?我想也许他们不需要用户名,但只能强制密码.但我不是SQL大师,我想知道是否可以使用一些技巧来对付我们.

我们使用MySQL.

请不要在输入验证方面做任何讲座,我知道这有多糟糕.我们应该做很多事情,比如我们页面上的超时和锁定,所以不能强行逼迫.

cha*_*aos 10

"有人可以登录此页面而不需要密码":是的,非常简单.试试用户名yourfavoriteadmin' OR 1; --.

也可以链接这个,因为肯定有人会...


Bom*_*mbe 9

它非常脆弱.如果你知道所有漂亮的东西,比如mysql_real_escape_string为什么你浪费你的时间并提出这个问题?你应该全力以赴,修复它.你知道,就像,现在.