正如在Owasp输出_编码_规则_摘要中提到的,为什么我们需要转义除字母数字字符使用HTML实体&#xHH;格式转义所有字符,包括空格以外的所有字符。
如果包含在双引号(“)中的html属性,并且我们只转义五个字符,是否可以执行xss攻击?
注:独占javascript: src/href中的协议
转换& to &转换< to <转换>到>转换“转换”为“转换”
发布于 2016-11-23 13:29:32
不,这是不可能的(但请注意,规则是关于HTML公共属性的,而href、src、样式和事件处理程序等其他属性则被明确排除在外)。
规则存在的原因在您引用的同一份文件中给出:
除字母数字字符外,使用&#xHH;格式(或可用的命名实体)转义ASCII值小于256个的所有字符,以防止关闭属性。这条规则之所以如此宽泛,是因为开发人员经常不引用属性。正确引用的属性只能用相应的引号转义。不带引号的属性可以用许多字符来划分,包括空格 %*+、-/;<=>^和x。
排除非公共属性实际上在实践中是相关的。例如,考虑到这一点:
<img src="no" onerror="alert('[some user input]')">如果单引号只是HTML编码,攻击者可以通过');alert('1执行XSS攻击。输入将转换为');alert('1,浏览器的HTML解析器将其解析,然后将其以解码形式传递给JavaScript引擎。
https://security.stackexchange.com/questions/143383
复制相似问题