插件安全防护:CSRF Token与参数化查询的实战组合拳
开发插件时最容易忽视的两个安全漏洞: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']这种看似安全的变量。你永远不知道黑客会从哪个角度突破防线。
最新打赏


QQ官方交流群