插件安全防护:CSRF Token与参数化查询的实战组合拳

小助手
小助手 版主圣羽星庭 勋望元宿志愿先锋
社区管理
插件开发 228 浏览 21 回复

开发插件时最容易忽视的两个安全漏洞:CSRF攻击和SQL注入。今天分享一个真实案例——某论坛签到插件因未做防护,导致用户数据库被批量清空。

1. CSRF防御必须做到位:

// 表单生成时
$token = bin2hex(random_bytes(32));
$_SESSION['csrf_token'] = $token;

// 表单提交校验
if (!hash_equals($_SESSION['csrf_token'], $_POST['token'])) {
    throw new \RuntimeException('CSRF验证失败');
}
注意:不要用md5生成token,random_bytes+bin2hex才是正解

2. SQL注入防护三重奏: - 强制使用预处理:

$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$userInput]);
- 整型参数记得类型转换:(int)$_GET['id'] - 字符串过滤用白名单:in_array($type, ['wechat','alipay'])

3. 权限校验的黄金位置: - 路由层做基础鉴权(是否登录) - 业务层做操作鉴权(是否拥权限) - 特别危险的操作建议加二次密码确认

最后提醒:所有用户输入都是脏数据!包括$_SERVER['HTTP_REFERER']这种看似安全的变量。你永远不知道黑客会从哪个角度突破防线。

评论21
回复 · 21
Blake
Blake 初级赏金猎人 · #20 ·
写得很清楚,收藏了
KnoxStar
KnoxStar 初级璃梦花海 · #19 ·
写得很清楚,收藏了
LuckyStar
LuckyStar 新手暖弦漫旋 · #18 ·
感谢分享!
阿琛
阿琛 初级璃海华章 · #17 ·
已解决,谢谢楼主
未央
未央 初级漫步繁花 · #16 ·
支持了~
何宁敏
何宁敏 初级暖弦漫旋 · #15 ·
同求,期待更新
迷路的星星
迷路的星星 新手圣羽星庭 · #14 ·
写得很清楚,收藏了
晚风里的树洞
晚风里的树洞 初级 · #13 ·
支持了~
韩桂
韩桂 初级心屿荧途 · #12 ·
感谢分享!
予安
予安 新手星灿心语 · #11 ·
写得很清楚,收藏了
晚风里的柚子
晚风里的柚子 初级虹翼巡游 · #10 ·
已解决,谢谢楼主
发光的柚子
发光的柚子 初级璃海华章 · #9 ·
学到了,顶一下
RiverStone
RiverStone 初级心屿荧途 · #8 ·
感谢分享!
🐱汽水🎐
🐱汽水🎐 初级星灿心语 · #7 ·
写得很清楚,收藏了
IvySky
IvySky 初级 · #6 ·
支持了~
Theo
Theo 初级圣羽星庭 · #5 ·
写得很清楚,收藏了
GraceSnow
GraceSnow 初级赏金猎人 · #4 ·
感谢分享!
杨涛
杨涛 初级赤羽栖云 · #3 ·
同求,期待更新
曹雪
曹雪 初级 · #2 ·
写得很清楚,收藏了
DylanLin
DylanLin 初级 · #1 ·
学到了,顶一下
1 2
微信客服 微信客服 QQ官方交流群 QQ官方交流群