PHP 安全清单:预编译、CSRF 与输出转义

PHP 安全清单:预编译、CSRF 与输出转义

AI 摘要

确保PHP应用安全,需遵循预编译SQL、使用CSRF令牌、输出转义等习惯,并关注会话安全与跳转参数白名单。

由 AI 生成,仅供参考

写第一版注册接口的那天晚上,我把用户输入直接拼进了 SQL。测试用的用户名叫 o'neill,页面当场报错。

报错还是好事。真正麻烦的是那种不报错的写法:输入被某层过滤净化过,看起来安全了,换个编码就绕过去了。从那以后我养成了几个习惯,列在这里当自查表。

数据库只走预编译。不管输入是什么,参数永远交给 PDO 的占位符处理,代码里不允许出现字符串拼接的 SQL。

写操作必须有 CSRF 令牌。浏览器会自动带 Cookie,这是跨站请求伪造的根子,令牌是唯一靠谱的反制。站内用 fetch 的地方统一放请求头里。

输出必须转义。存进去的时候干净不代表输出的时候安全,同一条数据会在不同的上下文里出现。所有变量进 HTML 之前过一遍 htmlspecialchars。

跳转参数白名单。登录后回跳只接受 / 开头的站内路径,协议相对地址一律拒绝,这是钓鱼最爱钻的口子。

会话方面:Cookie 加 HttpOnly 和 SameSite,登录成功换一次会话 ID,改密码后踢掉其他设备。

这张表不高深。难的是每个入口都过一遍,而不是出事之后补。

相关文章

分享 微博 X TG .md
字体 字号

评论(0)

登录后才能发表评论。去登录 →

还没有评论,来抢沙发吧~