Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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
Mysql 如果恶意SQL存储在数据库表中,是否可能执行SQL注入攻击?_Mysql_Security_Sql Injection - Fatal编程技术网

Mysql 如果恶意SQL存储在数据库表中,是否可能执行SQL注入攻击?

Mysql 如果恶意SQL存储在数据库表中,是否可能执行SQL注入攻击?,mysql,security,sql-injection,Mysql,Security,Sql Injection,我正在努力确保能够正确地防止SQL注入 如果我有一个MySQL表T1,其中包含一列C1,并且C1中存储的行的值是某个SQL,那么当选择它时,是否有可以存储的SQL可以执行 如果它包含“SELECT*fromt2”,那么选择C1只会返回该SQL字符串,但我只是想知道是否有任何方法可以执行存储的SQL 我不想将来自用户的未验证数据存储在db表中,这样当我选择它时,它会执行一些恶意SQL,希望它是名字或类似的东西 谢谢 保罗 选择时是否会执行 没有 选择时是否会执行 不,如果您所做的只是选择内容,则不

我正在努力确保能够正确地防止SQL注入

如果我有一个MySQL表T1,其中包含一列C1,并且C1中存储的行的值是某个SQL,那么当选择它时,是否有可以存储的SQL可以执行

如果它包含“SELECT*fromt2”,那么选择C1只会返回该SQL字符串,但我只是想知道是否有任何方法可以执行存储的SQL

我不想将来自用户的未验证数据存储在db表中,这样当我选择它时,它会执行一些恶意SQL,希望它是名字或类似的东西

谢谢

保罗

选择时是否会执行

没有

选择时是否会执行

不,如果您所做的只是选择内容,则不会

只有在随后以不安全的方式将SQL复制到另一个字符串并将该字符串作为查询执行时,才能执行SQL

例如:

$sql1 = "SELECT name FROM users";
$name = $pdo->query($sql1)->fetchColumn();

// the following is unsafe:
$sql2 = "SELECT * FROM user_activity WHERE user_name = '$name'";
$stmt = $pdo->query($sql2);
这被称为“二阶SQL注入”,并不少见。修复与SQL查询中的任何其他动态值相同:使用查询参数

$sql2 = "SELECT * FROM user_activity WHERE user_name = ?";
$stmt = $pdo->prepare($sql2);
$stmt->execute(array($name));