问题说明了一切,如果我检查 is_numeric() 的变量返回 true,可以直接放入 MySQL 查询,还是需要应用标准转义?我在想空字符、溢出漏洞和其他东西。
一个模棱两可的例子是:
if(is_numeric($_GET['user_id'])) {
mysql_query("SELECT * FROM `users` WHERE id = ".$_GET['user_id']);
}
MySQL 中的数据类型是 INT()。
最佳答案
我认为最安全的方法是将 user_id 转换为整数,如果无效则返回 0。
$user_id = (int) $_GET['user_id'];
if ($user_id > 0) {
mysql_query("SELECT * FROM `users` WHERE `id` = " . $user_id);
}
关于php - is_numeric() 是否意味着 var 对 MySQL 是安全的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4396761/