一种避免过滤常用词的技术是我在标题中描述的技术。
但是,为什么这种技术有效?例如,SELECT 与 SELSELECTECT 不同。
一种避免过滤常用词的技术是我在标题中描述的技术。
但是,为什么这种技术有效?例如,SELECT 与 SELSELECTECT 不同。
假设我将这个词列入黑名单<script>
并将其替换为任何内容。然后<scr<script>ipt>
变成<script>
。
这就是为什么编写良好的 html 净化器/净化器递归地应用规则的原因。只有当最后一个清理步骤没有更改内容时,它才会停止/不应用另一轮处理规则。(如果需要太多处理轮次,它也可能会失败并且不返回任何内容)。
这适用于仅使用s.Replace("select","")
. 当您将其应用于 时selselectect
,它会删除select
中间的 ,但由于它不会在输出上再次运行,因此 split sel
+ect
会成为select
并在消毒剂中幸存下来。
这种攻击对任何理智的消毒剂都不起作用。