问题说明了一切,如果我检查 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/

10-12 13:15