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