有人可以给我一些帮助吗?我有三个PHP SQL查询,我必须保护免受SQL注入。我在谷歌上搜索,但我认为对我来说太难了,因为它与PHP结合,我不知道关于PHP和关于SQL的问题
如果有人能给我保护代码,我将不胜感激
代码:
$q=mysql_query("SELECT * FROM user where email= '".$_REQUEST['email']."'",$link );
$q=mysql_query("UPDATE user SET mobilePhone='".$_REQUEST['mobilePhone']."', fullName='".$_REQUEST['fullName']."' WHERE email='".$_REQUEST['email']."'",$link );
$q=mysql_query("UPDATE user SET mobilePhone='".$_REQUEST['mobilePhone']."' , fullName='".$_REQUEST['fullName']."', password='".$_REQUEST['password']."' WHERE email='".$_REQUEST['email']."'",$link );
答案 0 :(得分:2)
防止SQL注入的最小办法是在进入查询的任何变量之前使用mysql_real_escape_string
函数。
您可以做的最好的事情是use prepared statements以避免SQL注入。
准备语句的参数 不需要引用;司机 自动处理这个。 如果是 应用程序专用于准备 声明,开发人员可以肯定 不会发生SQL注入 (但是,如果其他部分 查询正在建立 未转义的输入,SQL注入是 仍然可能)。
<强>建议:强>
为了更安全,您应该始终使用正确的数组,例如$_POST
或$_GET
,而不是$_REQUEST
出于安全原因。
答案 1 :(得分:2)
嗯,简单的方法是在mysql_real_escape_string()
中包装每个$_REQUEST
变量......
$q=mysql_query("SELECT * FROM user
where email= '".mysql_real_escape_string($_REQUEST['email'])."'",$link );
更好的方法是使用准备好的查询。有很多关于如何做的教程,所以我会把它留给你......
答案 2 :(得分:1)
看一下PHP的mysql_real_escape_string