此代码是否 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/