Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 清理数据是否消除了SQL注入的可能性?_Php_Mysql_Sql - Fatal编程技术网

Php 清理数据是否消除了SQL注入的可能性?

Php 清理数据是否消除了SQL注入的可能性?,php,mysql,sql,Php,Mysql,Sql,通过在使用数据之前对其进行清理,我是否仍有SQL注入的风险?如果是这样,我应该使用什么标准来消除SQL注入的可能性?我被告知下面的代码需要SQL注入。但是,我在查询中使用数据之前对其进行了清理,因此我不确定风险是否仍然存在 VALUES ('".$_SESSION["username"].$_SESSION["setCount"]."', '".$_SESSION["username"]."') 我已经阅读了几个问题并研究了SQL注入,但我仍然不确定是否选中了所有的框。似乎最常见的是数据清理、

通过在使用数据之前对其进行清理,我是否仍有SQL注入的风险?如果是这样,我应该使用什么标准来消除SQL注入的可能性?我被告知下面的代码需要SQL注入。但是,我在查询中使用数据之前对其进行了清理,因此我不确定风险是否仍然存在

VALUES ('".$_SESSION["username"].$_SESSION["setCount"]."', '".$_SESSION["username"]."')

我已经阅读了几个问题并研究了SQL注入,但我仍然不确定是否选中了所有的框。似乎最常见的是数据清理、程序结构和限制用户可以访问哪些变量。

使用准备好的语句:

示例:

$insert = $db->prepare("INSERT INTO table (usernameCount,username) VALUES (?,?)");
$insert->bind_param("ss", $usernameCount, $username);

$username = $_SESSION['username'];
$usernameCount = $_SESSION['username'] . $_SESSION['setCount'];

$insert->execute();
bind_param
方法中,第一个参数是每个参数的数据类型


理论上,每个
s
对应于每个参数
$usernamecont
$username

。但正确的方法是使用参数。参数还有其他优点,例如缓存查询计划。@GordonLinoff通过使用参数,是否需要采取其他预防措施?似乎参数删除了SQL注入,但是否存在其他潜在风险。您的代码可能更容易编写、调试和运行得更快。我想,在某些情况下,这些都可能被视为风险;)prepared statements和bind_param是否将数据视为字段参数而不是实际的SQL代码?为了回答我自己的问题,请阅读本文的任何人,此方法将值视为字段参数,而不是实际的SQL代码。@如果驱动程序本机准备的语句可用并启用,csell PDO可以通过连接独立发送查询和数据。如果PDO处于“仿真”模式,那么它将使用您的数据组合查询,但这样做是安全的,因此无论使用何种机制,您都应该可以。