Php 这段代码中有SQL注入吗?

Php 这段代码中有SQL注入吗?,php,sql,Php,Sql,我曾经测试过我的代码是否存在SQL注入威胁。这是其中的一个: Userinput reaches sensitive sink due to insecure usage of mysql_real_escape_string() without quotes (Blind exploitation) 370: mysql_query mysql_query("INSERT INTO `members` (`Username`, `Password`, `Name`, `AccessLe

我曾经测试过我的代码是否存在SQL注入威胁。这是其中的一个:

    Userinput reaches sensitive sink due to insecure usage of mysql_real_escape_string() without quotes (Blind exploitation)
370: mysql_query mysql_query("INSERT INTO `members` (`Username`, `Password`, `Name`, `AccessLevel`, `LastLogin`) VALUES ('" . mysql_real_escape_string($user) . "', '" . mysql_real_escape_string($pass) . "', '" . mysql_real_escape_string($fuln) . "', '" . mysql_real_escape_string($al) . "', '" . mysql_real_escape_string($now) . "');"); 
364: $user = htmlentities($_POST['user'], ENT_QUOTES); 
365: $pass = htmlentities(md5($_POST['pass']), ENT_QUOTES); 
366: $fuln = htmlentities($_POST['fuln'], ENT_QUOTES); 
367: $al = htmlentities($_POST['al'], ENT_QUOTES); 
368: $now = time(); 
requires:
359: if($action == "newadmin")
360: if($memberinfo['AccessLevel'] == 3)
363: if($_GET['submit'] == "new")
369: if($user && $pass && $fuln)

有人能给我解释一下为什么这段代码容易受到SQL注入的攻击吗?我认为要么是因为缺乏知识,要么是误报。我一直在研究,但我找不到任何新的东西,我似乎在兜圈子。

这肯定是误报。所描述的问题是当您使用
mysql\u real\u escape\u string()
时,但不能确保结果包含在引号中。我查过了,你的琴弦都封好了

但是,您应该注意到,从PHP5.5.0开始,
mysql
API就不受欢迎,您应该使用
mysqli
PDO-mysql


编辑:还要注意,根据注释,使用
md5
一点也不安全,您应该在生成散列之前将密码连接到一个密码来对其进行加密。如果你给它加盐,入侵者不能简单地使用预先构建的哈希字典来获取密码,他们需要创建一个新的口述,特别是包含你的salt的md5 for pass?2013年,mysql的Intead使用PDO或MYSQLI,并使用prepare语句:)密码也可以在每个数据库和每次使用中使用一点。对你的问题有答案。这完全抹杀了我下周的业余时间,但听起来像是必要的。非常感谢您的帮助!成功地将网站完全更新到mysqli并添加了salting,并没有花费预期的时间!再次感谢!