【发布时间】:2012-05-10 19:24:17
【问题描述】:
我有几个关于参数化查询的基本问题
考虑这段代码:
$id = (int)$_GET['id'];
mysql_query("UPDATE table SET field=1 WHERE id=".$id);
现在使用参数化查询也是一样
$sql = "UPDATE table SET field=1 WHERE id=?";
$q = $db->prepare($sql);
$q->execute(array($_GET['id']));
我的问题是:
- 是否存在第一个代码(即带有
(int)演员表)不安全的情况? - 第二段代码可以吗,还是我也应该将
$_GET['id']转换为int? - 第二段代码是否存在已知漏洞?也就是说,如果我使用第二个查询,有什么方法可以进行 SQL 攻击?
【问题讨论】:
标签: mysql sql-injection sanitization