有没有一种方法可以全局应用esc\\U html(…)到所有输入和锚点以筛选出XSS标记?
不,当你输出的时候已经太迟了,任何损坏都已经造成了。
即使你能做到这一点,你也不会想这么做,逃跑是高度关联的。逃避是关于实施假设,例如。<a href="<?php echo esc_url( $url ); ?>...
部队$url
即使不是URL,也要成为URL。不再应该是URL,它将始终是URL。它可能是一个损坏的URL,但它肯定是一个URL。esc_html
不是一个适用于所有场合的通配符转义函数。
当您拥有HTML时,应用转义为时已晚,并且您没有上下文来确定可以使用哪个转义函数。
您可以使用DOM解析器检查HTML,但这无助于防止HTML标记注入或XSS攻击。它也无法应用转义,因为值已经存在,最多只能是清理和验证,而不是转义。wp_kses_post
可用于将有效标记列入白名单,但WordPress已经这样做了,并且正在the_content
过滤器会破坏使用合法标签等的嵌入内容和其他内容
同样,尝试这样做的插件也不可信,这是不可能做到的。PHP中没有可以应用的通用自动转义。事实上,为了安全可靠,必须对输出进行转义。