Webman中防止SQL注入与跨站脚本攻击(XSS)的实战

落明同学_5142

落明同学_5142

2026-06-11

528人浏览

原创

webman中db::query()拼接字符串存在sql注入风险,必须改用query builder或参数化查询;输出用户数据需html转义防xss;cookie须设httponly和samesite;orm的whereraw()等方法也需参数化处理。

webman中防止sql注入与跨站脚本攻击(xss)的实战

Webman里Db::query()拼字符串就是裸奔

只要看到Db::query()后面跟着双引号或单引号里拼变量,比如"SELECT * FROM user WHERE id = $id",立刻停手——这不是写法问题,是生产环境直接开后门。Webman 的 Db::query() 不做任何拦截,传什么执行什么,攻击者填id=1 OR 1=1 --就能拖全表。

必须改用两种安全路径之一:

  • Db::table('user')->where('id', $id)->first():Query Builder 自动参数绑定,变量不进 SQL 字符串
  • Db::query("SELECT * FROM user WHERE name = ?", [$name]):原生 SQL 必须带参数数组,问号占位符和数组顺序严格对应
  • 禁用Db::raw()塞用户输入,它只该用于Db::raw('NOW()')这类固定表达式
  • ORDER BY、LIMIT等无法参数化的地方,用白名单校验或强转:in_array($sort, ['id', 'name']) ? $sort : 'id',intval($offset)

输出没转义,XSS就藏在echo里

Webman 视图层(无论原生 PHP 还是 ThinkTemplate)默认不做 HTML 转义。写<div> <?php echo $request->get('comment'); ?></div>,用户提交<script>fetch('/api/steal?cookie='+document.cookie)</script>,浏览器真会执行。

所有用户数据输出到 HTML 页面前,必须上下文敏感处理:

  • 普通文本输出:统一用htmlspecialchars($str, ENT_QUOTES, 'UTF-8')
  • 插入href或src属性:先过滤协议,再urlencode(),不能只靠htmlspecialchars
  • 富文本场景(如编辑器内容):必须用白名单过滤器(如HTMLPurifier),只放行<p></p>、<strong></strong>等安全标签
  • 模板引擎若支持自动转义(如 Twig 的{{ comment|e }}),确认已启用且未被全局关闭

Cookie缺HttpOnly/SameSite=Strict,XSS就能盗会话

Webman 默认 session cookie 不带关键安全属性。一旦页面存在 XSS 漏洞,攻击者执行document.cookie就能拿到 session_id,直接冒充用户发起请求。

Webman 2.2.0
Webman 2.2.0

Webman 2.2.0版本强化了 TCP/UDP 服务支持,优化路由组管理,并增强异步任务处理能力。结合协程与连接池技术,Webman 能轻松应对高并发场景,适用于网站、接口服务、即时通讯、物联网及游戏开发,兼具高性能、灵活扩展与稳定可靠,是多场景 PHP 服务开发的理想选择。

下载

必须显式补全配置:

  • 修改config/session.php,加这两项:'cookie_httponly' => true、'cookie_samesite' => 'Strict'(或'Lax')
  • 手动 setcookie 时,三项缺一不可:setcookie('token', $val, [..., 'httponly' => true, 'samesite' => 'Lax', 'secure' => true])
  • secure 属性只在 HTTPS 下生效,开发环境常被忽略,上线前务必检查 Nginx/Apache 是否强制 HTTPS 且响应头含Strict-Transport-Security

ORM模型不是自动免疫,whereRaw()是高危缺口

ThinkPHP 风格的 Model(继承\think\Model)在where()、find()里用变量是安全的,但whereRaw()、whereExists()这些“原始条件”方法接受字符串,底层不自动绑定参数。

例如$model->whereRaw("email = '{$_GET['email']}'")->find(),和拼接 SQL 无异。正确写法只有两种:

  • 改用参数化形式:$model->whereRaw("email = ?", [$email])
  • 彻底避免whereRaw(),拆成多个where()链式调用
  • 模型类里别写"WHERE name = '" . $name . "'"这种手拼 SQL,哪怕在app/model/User.php里也不行

最危险的不是主查询,而是日志记录、调试输出、缓存键生成这些辅助逻辑里悄悄拼了用户数据——它们不会报错,但可能成为二次注入入口。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Webman入门教程合集
Webman入门教程合集

本专题聚焦Webman高性能PHP框架,为您提供零基础入门的一站式全攻略。内容涵盖开发环境搭建全流程、核心原理解析(如目录结构、生命周期)及API接口实战开发。无论您是初次接触还是进阶巩固,都能在此找到实用的教程合集,助您快速掌握这款“常驻内存”的PHP利器,实现高性能后端应用的高效构建。

2026.05.21

237

12

Webman框架集成与数据库配置
Webman框架集成与数据库配置

本专题聚焦 Webman 高性能 PHP 框架,为您提供一站式后端开发全攻略。内容深度涵盖框架快速入门、多数据库进阶配置(Eloquent & ThinkORM)、以及企业级核心组件集成(如 JWT 鉴权、RabbitMQ 消息队列、Elasticsearch 全文搜索)。

2026.05.21

187

16

Webman常见问题与错误排查
Webman常见问题与错误排查

本专区深度聚焦 Webman 高性能框架常见故障与性能调优,为您提供一站式全能排查攻略。内容精准覆盖 404/500 核心报错修复、内存溢出(Memory Limit)深度排查、以及 Redis 连接与 Session 失效等开发者高频痛点。

2026.05.21

329

15

Webman框架功能开发全指南
Webman框架功能开发全指南

本专题深度聚焦 Webman 高性能 PHP 框架全功能模块开发,为您提供一站式实战全攻略。内容深度涵盖从基础的 RESTful API 规范化设计到高阶的即时通讯(WebSocket)、多语言国际化(i18n)及定时任务系统等等。

2026.05.21

364

32

Webman部署与运维指南
Webman部署与运维指南

本专区聚焦 Webman 高性能框架生产级部署与运维实战,为您提供一站式全攻略。内容深度涵盖 Linux/Windows 多端环境搭建、核心架构方案(如 Docker 容器化扩容、负载均衡下的 Session 共享、集群一致性部署)及自动化运维体系。

2026.05.21

338

14

Webman协程与高性能优化
Webman协程与高性能优化

本专区聚焦 Webman 协程与高性能优化教程,为您提供一站式学习攻略。内容涵盖框架协程机制详解、性能优化策略、实战示例及常见问题解析。无论您是 PHP 开发初学者,还是追求高并发优化的进阶开发者,都能在此找到实用指南,助您全面掌握 Webman 高性能 PHP 框架,实现高效、可扩展的 Web 应用开发。

2026.05.21

297

15

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

2026.10.10

40

15

Kratos框架HTTP与gRPC服务开发教程
Kratos框架HTTP与gRPC服务开发教程

本专题围绕Kratos框架双协议服务开发,涵盖HTTP路由与处理器编写、参数获取、gRPC服务实现与客户端调用、metadata上下文传递、encoding编解码注册、统一响应封装、超时控制与流式响应实现方法。

2026.10.10

20

15

Kratos框架Protobuf接口定义与代码生成合集
Kratos框架Protobuf接口定义与代码生成合集

本专题讲解Kratos框架接口定义体系,涵盖proto编写规范、proto add/client/server生成命令、http注解路由、validate校验、OpenAPI文档生成、跨服务proto复用与兼容性设计。

2026.10.10

0

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Webman和FastAPI的性能对比
Webman和FastAPI的性能对比

共0课时 | 314人学习

Webman中文手册
Webman中文手册

共0课时 | 0人学习

webman初步使用及后台搭建
webman初步使用及后台搭建

共15课时 | 2.7万人学习