关键漏洞信息 漏洞概述 类型: 存储型DOM XSRF 位置: "Recent Orders" 控制面板小部件中的订单状态名称 影响范围: 当任何管理员访问控制面板时,订单状态名称未经过适当转义即通过JavaScript字符串连接渲染,允许脚本执行。 影响版本与修复版本 受影响版本: - >= 5.0.0 = 4.0.0-RC1, Settings -> Order Statuses。 3. 创建新的订单状态(例如:"Pending")。 4. 将名称字段设置为: 5. 保存订单状态。 6. 进行具有不同状态的订单(例如:"New"和恶意创建的状态)。 7. 前往控制面板(/admin/dashboard),添加"Recent Orders"小部件,选择之前的2个状态。 8. 注意XSS的执行。 技术细节 文件: vendor/craftcms/commerce/src/templates/_components/widgets/orders/recent/body.twig 根本原因: value.name(订单状态名称)直接拼接到HTML字符串中,未进行转义。当JavaScript将此HTML插入DOM时,名称中的任何恶意标签/脚本都会被执行。 缓解措施 在回调中使用 Craft.escapeHtml() 函数对 value.name 进行转义。