允许自定义样式的位置,为什么连样式内容也要过一遍过滤

📅 2026-11-01 👁️ 0

允许用户自定义样式的位置,为什么连样式内容也要过一遍过滤?因为样式不是纯表现层的描述文本:属性名和取值都可以指向外部资源、可以改变页面元素的呈现,也可以把可见内容换成另一套。WordPress 官方在本轮安全修复清单里列出了 Author 及以上角色通过绕过安全样式属性过滤器实现 CSS injection 的问题,处理方向是对样式内容本身做白名单过滤,而不是只检查它能不能被解析。

样式里能藏什么

常见的三类。一类是引用外部地址的属性取值,页面会把请求发给站点之外的服务;一类是覆盖布局的取值,可把已有内容遮挡或替换,影响访客看到的正文;一类是与脚本行为联动的写法,通过改变元素可见性影响页面交互。三类都不需要写脚本标签,却都能改变访客的实际体验,这正是「只过滤标签不足以拦住样式注入」的原因。

白名单过滤器为什么会被绕过

过滤要同时看三段:选择器、属性名、属性取值。只放开属性名而不限取值,取值里就能带外部地址;只检查取值字面,编码变形与拼接写法就可能绕开;只看当前提交的文本,落库后再与其他片段拼接同样能拼出未放开的写法。

因此口径是「双重白名单加落库前复核」:允许的属性名与允许的取值形式分别列清单,写入前再按合并后的最终文本核一次。这与富文本的内容过滤是同一套思路,只是对象从标签换成了样式。

过滤要覆盖的三段内容

一是结构与语义层。站内的敏感词过滤与关键词替换处理文本内容,内容审核处理发布前的把关,样式过滤要与之并列,不能被视为已被富文本过滤器顺带解决。二是身份与认证层。后台入口的 JWT 认证负责判断请求来自谁,与「这个人提交的样式是否安全」是两个问题。三是防采集与干扰码这类出站处理,它们改变正文渲染,但不改变样式过滤的判断对象。

站内还有面向脚本注入与数据库注入的防护,样式过滤属于同一套内容安全边界里的一个环节,缺少它时,其他层做得再严也会从这个入口留出缝隙。

谁能写自定义样式

暴露面由角色决定。可写自定义样式的角色范围越宽,过滤规则要越严格;如果只有站点管理员能改,仍建议保留过滤,防止被复用到批量导入或模板内容里。AnQiCMS 提供可视化模板编辑能力,模板与样式的修改在授权角色手里是常规操作,这类位置的改动同样应走同一套过滤与审核口径,而不是因为「是管理员写的」而跳过。

官方修复清单里的这条问题面向 Author 及以上角色,说明「可信角色」并不是免检条件;发布说明同时提醒只有较新版本处于活跃支持中,把这类修复留在旧版本之外会持续暴露。

问:能不能直接关掉自定义样式入口? 答:可以,这是最省事的处置。业务确实需要时,再按双重白名单与最终文本复核两步放开。

问:管理员写的样式也过滤会不会误伤? 答:会有需要放开的正常写法,做法是把确认安全的属性与取值补进白名单,而不是对整个角色跳过过滤。

问:模板文件里的样式要不要走同样检查? 答:模板属于代码层,一般由部署流程控制;对外表单里可提交的样式片段才需要运行时过滤,两者的控制手段不同但判断口径应当一致。

相关文章

会员改绑邮箱的确认流程被绕过,账号侧还要核对什么

会员改绑邮箱的确认流程被绕过,等于绕过者拿到了找回密码的通道,账号侧要核对的不只是这一处逻辑。本文说明属性变更为什么要双向确认、用户分组与访问权限要按什么口径收紧,以及邮件提醒在处置过程中承担的作用,并给出修复之后要回查的四项记录。

2026-11-01

文章地址别名能被外部枚举出来,列表接口要收在哪一处

文章地址别名能被外部枚举出来,通常需要两个条件同时成立:别名可按规律猜测,以及列表接口允许大批量翻页返回。收口点因此在接口侧而非页面侧,要限制单次返回规模、按域设置对外暴露范围,并把未公开内容的访问口径收紧。本文说明枚举成立的条件、暴露的是什么清单,以及站内接口要核对的位置。

2026-11-01

后台能填外部链接的地方,为什么要限制服务器访问内网地址

后台能填外部链接的地方要限制服务器访问内网地址,是因为服务器会代替用户去取这个地址:链接校验一旦绕过,请求就能打到链路本地地址段,把内网服务暴露给外部输入。校验要同时做在写入时与请求前,再由出网限制兜底,导入与远程取图这类入口尤其要单独收口。

2026-11-01

开放用户注册的多站点为什么要先收紧注册入口再打补丁

开放用户注册的多站点之所以要先收紧注册入口再打补丁,是因为这类风险的触发条件本身就写在一起:注册开启、普通用户可新建站点。补丁窗口期把注册关掉、把新建站点的权限收住,能直接掐掉攻击入口;打完补丁还要回查被建出来的站点,并同步做好备份与权限复核。

2026-11-01

漏洞库里查不到的组件,能不能当作没有风险

公开漏洞库里查不到某个组件,不能当作没有风险,多数情况下只是收录范围与命名口径没有对上。漏洞库按核心、扩展与主题分类整理条目并逐条核实,自建与商用组件往往不在其中。本文给出查不到时的三种原因、按最坏情况收权限的处理口径,以及把资产清单变成可执行减害动作的顺序。

2026-11-01

安全版本窗口和大版本发布排在同一周,站点先跟哪个

固定安全版本窗口与年度大版本排在同一周时,先跟安全版本。安全版本关闭的是已知可利用入口,大版本会改数据结构与模板行为,验证成本更高。本文说明两类更新的性质差别、把大版本延后一周的代价怎么评估,以及排期里要预留的两步验证与回退准备。

2026-11-01

九月的垃圾站更新拖了近十四天才结束,排名什么时候才适合复核

九月这轮垃圾内容更新从下旬开始、十月上旬才标记完成,滚动持续十三天多。更新没有滚完之前,排名读数是滚动期内的中间状态,不能当结论;适合复核的时间要满足两个条件:官方面板标记完成,且完成日之后的数据回到稳定区间。等待期先排查 robots 与站点地图这类基础项。

2026-11-01

AI 概览引用的页面只有三成多来自前十,那还要不要盯排名

大样本研究显示,AI 概览引用的页面里只有三成多同时排在自然结果前十,一年前这一比例约四分之三。重合度下滑不等于排名失效:排名仍是入口,但不再是引用条件。该盯的是引用命中了哪些问题、段落能否被单独摘出,以及关键词库与锚文本能否把内容稳定识别出来。

2026-11-01