php - 这是防止 sql 注入(inject)的安全方法吗?

标签 php mysql sql-injection

此代码是否 100% 安全免受 sql 注入(inject):

$id = $_GET['id']
mysql_query('SELECT * FROM mytable WHERE id < ' . (int)$id);

还是我必须这样做?

$id = $_GET['id']
mysql_query('SELECT * FROM mytable WHERE id < ' . mysql_real_escape_string($id));

最佳答案

如果 $_GET['id'] 为空,或者 (int)$_GET['id'] 计算结果为空,查询仍可能崩溃。您最终会在查询中遇到语法错误。盲目地对值进行转义或类型转换并将其填充到查询中是不够的。您必须检查最终的“安全”值是否真的安全,而不仅仅是披着外婆衣服的狼。

关于php - 这是防止 sql 注入(inject)的安全方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4683814/

相关文章:

php - 我的数组在 php 中没有返回任何内容

java - 使用依赖项构建 Maven

javascript - 是否可以从表单提交将 var 字符串变量发送到 mysql?还是安全漏洞?

php - 在php中取消设置编码数组后没有索引的json

php - 返回值与传递对象引用

php - 使用 Laravel 将 CSV 文件上传到 MySQL

c# - QuoteIdentifier 是否足以保护查询免受 Sql 注入(inject)攻击?

php - 如何从 html 插入 select/option 并从 SQL 表中的 array_rand 插入变量

mysql - 从 CSV 文件导入的 MySQL 表中得到奇怪的结果。编码问题?

java - 攻击者可以将 sql 或 javascript 注入(inject) java POJO 中吗?