PHP 安全清单:预编译、CSRF 与输出转义
AI 摘要
确保PHP应用安全,需遵循预编译SQL、使用CSRF令牌、输出转义等习惯,并关注会话安全与跳转参数白名单。
由 AI 生成,仅供参考
写第一版注册接口的那天晚上,我把用户输入直接拼进了 SQL。测试用的用户名叫 o'neill,页面当场报错。
报错还是好事。真正麻烦的是那种不报错的写法:输入被某层过滤净化过,看起来安全了,换个编码就绕过去了。从那以后我养成了几个习惯,列在这里当自查表。
数据库只走预编译。不管输入是什么,参数永远交给 PDO 的占位符处理,代码里不允许出现字符串拼接的 SQL。
写操作必须有 CSRF 令牌。浏览器会自动带 Cookie,这是跨站请求伪造的根子,令牌是唯一靠谱的反制。站内用 fetch 的地方统一放请求头里。
输出必须转义。存进去的时候干净不代表输出的时候安全,同一条数据会在不同的上下文里出现。所有变量进 HTML 之前过一遍 htmlspecialchars。
跳转参数白名单。登录后回跳只接受 / 开头的站内路径,协议相对地址一律拒绝,这是钓鱼最爱钻的口子。
会话方面:Cookie 加 HttpOnly 和 SameSite,登录成功换一次会话 ID,改密码后踢掉其他设备。
这张表不高深。难的是每个入口都过一遍,而不是出事之后补。
评论(0)
登录后才能发表评论。去登录 →
还没有评论,来抢沙发吧~