You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仅接收int类型数据时,是否存在SQL注入风险?

这段接收int类型查询参数的PHP代码是否存在SQL注入风险?

首先明确结论:这段代码不存在SQL注入风险,原因如下:

  • 你先用intval()处理了$_POST['enroll']参数,这个函数会把任何输入强制转换成整数类型。比如不管输入是带恶意SQL片段的字符串(像"123' OR 1=1--")、特殊字符还是其他非数字内容,intval()都会返回一个纯整数(上面的例子会返回123)。
  • 后续调用的mysqli_real_escape_string()其实是多余的操作——纯整数里根本没有SQL注入需要用到的特殊字符(比如单引号、分号),转义对它起不到任何作用。
  • 最终拼进SQL语句的是一个干净的纯整数,攻击者没法通过构造输入来篡改SQL语句的逻辑。

额外优化建议

虽然当前代码安全,但可以更简洁:直接用intval()处理后拼接即可,没必要多做一次转义。另外,不管参数类型是什么,使用预处理语句都是预防SQL注入的通用最佳实践,示例代码如下:

$enroll = intval($_POST['enroll']);
$stmt = $conn->prepare("SELECT * FROM Student_Data WHERE enroll=? LIMIT 1");
$stmt->bind_param("i", $enroll);
$stmt->execute();
$result = $stmt->get_result();

内容的提问来源于stack exchange,提问作者premium drycleaners

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 12:09:20