多个MySQLi准备的语句和漏洞(对我的代码进行评分)


Multiple MySQLi Prepared Statements and Vulnerability (Rate my code)

关于MySQLi在PHP中准备的语句的超长问题。给。

使用MySQLi准备的语句是否完全不受SQl注入的影响?例如,请参阅下面的代码,我认为我可以直接从用户那里使用$_POST变量而不需要任何注入保护,这是正确的吗?出于这个问题的目的,请忽略验证数据,以确保它是我的数据库的正确格式(无论如何,我总是这样做),我在这里更关注安全性。

$mysqli=new mysqli($host, $user, $password, $database);
$stmt=$mysqli->stmt_init();
$stmt->prepare('INSERT INTO `tablename` (`column`) VALUES (?)');
$stmt->bind_param('s', $_POST['value']);
$stmt->execute();
$stmt->close();
$mysqli->close();

我的代码正确吗?这只是我第二次或第三次使用MySQLi类编写准备好的语句。虽然它有效,但我想知道我是否做的每件事都正确?剧本中的任何部分都会被认为是不良做法吗?

最后,我该如何处理使用同一数据库连接的多个准备好的语句?我是否只在$stmt上使用close()方法,然后初始化另一个$stmt类?

谢谢!

参数绑定对SQL注入是安全的。你不需要担心那部分。它将用户输入与SQL语句连接在一起,这是不安全的。