使用mysqli_real_escape_string足以保护我的查询字符串?

时间:2011-03-04 22:38:14

标签: php mysql

  

可能重复:
  Are dynamic mysql queries with sql escaping just as secure as prepared statements?

仅使用mysqli_real_escape_string来保护查询安全吗?或者在尝试安全查询数据库时还需要考虑更多内容吗?

1 个答案:

答案 0 :(得分:1)

如果在任何地方正确使用,则real_escape_string是一个选项。但请考虑以下代码:

$page = $_GET['page'];
$sql = 'SELECT `name` FROM `user` WHERE `id` = ', mysqli_real_escape_string($page);

安全与否? real_escape_ string 只能用于转义引号内的字符串。 $page可能是1 OR id IN (2,3,4,5,6,7,8,9)→没有引号,没有真正的转义。在这种情况下,转换为正确的数据类型(int)可能会有所帮助。你最好使用准备好的陈述,它们不容易误用