POST Sanitation 和 PHP 中的 Prepared statements 之间的区别
Difference between POST Sanitation and Prepared statements in PHP
我总是使用 PDO
准备好的语句来防止 SQL
注入。
$params = array(':param' => 'value');
但是现在有人告诉我应该使用POST
卫生来防止SQL
注射。
$_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
现在我的问题是,当我已经为我的查询使用准备好的语句时,为什么还需要使用 POST
清理?
所以我的查询毕竟不能安全地防止 SQL
注入?
准备好的语句可以保护您免受 SQL 注入,但不能确保数据有效。
但除了可能的 SQL 注入之外,您还希望数据尽可能有效和干净。
比如说,有人在表格中提供了一个电子邮件地址,但它不是一个,您不应该在验证之前存储它。对于任何其他数据类型也是如此。
做一些像修剪空间这样的事情可以使数据更小。更小的数据也可以通过更快的结果和索引来获益。
防止 SQL 注入的最安全方法是使用 PDO 和准备好的语句。
您还应该在插入之前验证任何输入,因为 user 数据可能是邪恶的。例如,许多表单被机器人发送垃圾邮件。
我总是使用 PDO
准备好的语句来防止 SQL
注入。
$params = array(':param' => 'value');
但是现在有人告诉我应该使用POST
卫生来防止SQL
注射。
$_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
现在我的问题是,当我已经为我的查询使用准备好的语句时,为什么还需要使用 POST
清理?
所以我的查询毕竟不能安全地防止 SQL
注入?
准备好的语句可以保护您免受 SQL 注入,但不能确保数据有效。
但除了可能的 SQL 注入之外,您还希望数据尽可能有效和干净。
比如说,有人在表格中提供了一个电子邮件地址,但它不是一个,您不应该在验证之前存储它。对于任何其他数据类型也是如此。
做一些像修剪空间这样的事情可以使数据更小。更小的数据也可以通过更快的结果和索引来获益。
防止 SQL 注入的最安全方法是使用 PDO 和准备好的语句。
您还应该在插入之前验证任何输入,因为 user 数据可能是邪恶的。例如,许多表单被机器人发送垃圾邮件。