可能重复:
Are dynamic mysql queries with sql escaping just as secure as prepared statements?
仅使用mysqli_real_escape_string
来保护查询安全吗?或者在尝试安全查询数据库时还需要考虑更多内容吗?
答案 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)可能会有所帮助。你最好使用准备好的陈述,它们不容易误用