先处理能改变页面输出或读取账号数据的外部脚本,再处理只做统计和样式装饰的脚本;对每个脚本记录来源、加载位置、可访问对象、失效后果四项,缺一项就列入待核对而不是直接保留。这样做的原因是:用途不明的脚本一旦被规模化复制到多个页面,个别样本上的“看起来没事”会变成批量例外,权限边界也随之失控。
面对一个已经上线、但没人说得清用途的外部脚本,不要先问“要不要删”,先判断它属于哪一类。三类情形的处理顺序完全不同。
判断依据不是脚本文件名,而是它在页面里实际接触了什么。一个命名像统计工具的脚本,如果读取了表单字段,就应按第三类处理。反之,一个命名吓人的脚本若只切换暗色主题,也不必占用最高优先级。
以一个具体页面为对象,逐条走下面五步,每条都落到可执行的记录上,而不是停留在印象。
<head> 里阻塞渲染,还是放在页面底部延迟执行。位置决定了它能否在内容生成前介入。完成这五步后,清单上会出现两类条目:一类能明确说出用途和影响范围,另一类四项里有空缺。空缺项就是真正需要核对的权限,而不是全部脚本。
这是最容易误判的地方。在单个页面上,某个外部脚本可能因为该页结构简单而没有产生可见影响;一旦复制到栏目页、聚合页或带表单的页面,同样的脚本就会碰到它原本没碰到的元素。
因此判断边界时,要问三个问题:这个脚本是否依赖页面里某个特定容器存在?它是否假设页面上只有一个表单或一个列表?它是否假设加载顺序固定?只要有一个答案是“是”,就不能把单页的观察结果直接推广到全站。
假设例子:某页面只有一个正文容器,脚本改写其中的链接后看不出异常;当同一脚本被批量加到含多个列表的栏目页时,它可能对每个列表都执行一次改写。此时单页测试通过,并不代表批量部署安全。这个例子只用于说明比较方法,不代表任何真实项目结果。
另一个常见误判是把“请求量归零”当成处理正确的证据。请求量下降也可能来自缓存命中、脚本被浏览器拦截、访问路径改变,或统计口径本身变化。它只能作为线索,不能单独作为结论。要确认处理是否有效,应同时核对页面输出和权限清单上的失效后果是否与预期一致。
核对不是终点,而是修正清单的依据。执行一次屏蔽测试后,会出现三种结果,对应三种下一步。
把每次核对结果写回清单,清单才会从一次性记录变成可持续维护的权限台账。规模化部署前,先看台账里还有多少条目处于“用途未确认”状态;这些条目越多,批量复制带来的例外就越多。
当某个外部脚本确实承担了必要功能,但来源和权限说不清时,正规做法是替换为可自控的实现,或向提供方索取明确的权限说明后再决定是否保留。不要用批量注入、伪装来源或规避检测的方式让脚本继续运行,这类做法会把权限问题从“可核对”变成“不可追溯”。
如果脚本的作用是生成内容,边界同样清晰:内容需要独立价值,靠复制、拼接或站群方式堆出来的页面,维护成本和风险都会随规模上升,且无法通过权限清单来消除。清单能管住的是权限,管不住的是内容本身是否成立。
最后落到一个可执行动作:先给当前页面建立清单,标出所有“用途未确认”的条目,只对其中能影响页面输出或读取数据的部分做屏蔽测试,并把结果写回清单。下一步是否扩大部署,取决于这份清单里还剩多少空缺,而不是取决于单页看起来是否正常。