Php 清理数据是否消除了SQL注入的可能性?
通过在使用数据之前对其进行清理,我是否仍有SQL注入的风险?如果是这样,我应该使用什么标准来消除SQL注入的可能性?我被告知下面的代码需要SQL注入。但是,我在查询中使用数据之前对其进行了清理,因此我不确定风险是否仍然存在Php 清理数据是否消除了SQL注入的可能性?,php,mysql,sql,Php,Mysql,Sql,通过在使用数据之前对其进行清理,我是否仍有SQL注入的风险?如果是这样,我应该使用什么标准来消除SQL注入的可能性?我被告知下面的代码需要SQL注入。但是,我在查询中使用数据之前对其进行了清理,因此我不确定风险是否仍然存在 VALUES ('".$_SESSION["username"].$_SESSION["setCount"]."', '".$_SESSION["username"]."') 我已经阅读了几个问题并研究了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处于“仿真”模式,那么它将使用您的数据组合查询,但这样做是安全的,因此无论使用何种机制,您都应该可以。