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

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

开发插件时最容易忽视的两个安全漏洞: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']这种看似安全的变量。你永远不知道黑客会从哪个角度突破防线。

评论0
回复 · 0
还没有回复
微信客服 微信客服 QQ官方交流群 QQ官方交流群