我有一个配置文件字段,用户可以将数据发布到该字段上。我用以下正则表达式模式/<(.+?)>/
阻止任何内容
它阻止任何以<并以>结束。这会阻止XSS吗?我的意思是,如果不能使用<>HTML标记。
事实上,有些xss攻击不需要右括号。
例如,此页面列出了一个在IE 中工作的页面
<IMG SRC="javascript:alert('XSS')"
不管怎样,你没有意识到这一点应该给你一个教训。像这样的黑名单很容易出错,注定会失败。您应该使用一个应用适当转义的模板(在这种情况下是HTML实体编码,但这取决于输出将出现在的上下文)。
如果你能逃脱惩罚,就把输入限制在一个安全的字符集,比如字母数字,这样你一开始就不必担心这一点。并确保正确处理unicode和null字符。
浏览器在解析html时非常宽容。我怀疑以下输入在不关闭标签的情况下会起作用:
<input onfocus=alert(1) autofocus type=text
使用实体转义或白名单代替
哦,还有。不匹配,因此您有另一个旁路:
<script
>