如何使用“<scriptipt>”或“selselectect”来避免过滤?

信息安全 Web应用程序 攻击预防
2021-09-05 14:19:46

一种避免过滤常用词的技术是我在标题中描述的技术。

但是,为什么这种技术有效?例如,SELECT 与 SELSELECTECT 不同。

2个回答

假设我将这个词列入黑名单<script>并将其替换为任何内容。然后<scr<script>ipt>变成<script>

这就是为什么编写良好的 html 净化器/净化器递归地应用规则的原因。只有当最后一个清理步骤没有更改内容时,它才会停止/不应用另一轮处理规则。(如果需要太多处理轮次,它也可能会失败并且不返回任何内容)。

这适用于仅使用s.Replace("select",""). 当您将其应用于 时selselectect,它会删除select中间的 ,但由于它不会在输出上再次运行,因此 split sel+ect会成为select并在消毒剂中幸存下来。

这种攻击对任何理智的消毒剂都不起作用。