HTML属性转义
HTML attributes escaping
我正在阅读OWSAP预防表,但是我混淆了规则2。
规则#2 -在将不受信任的数据插入HTML公共属性之前进行属性转义规则#2用于将不可信的数据放入典型的属性值中,如宽度,名称,值等。这不应该用于复杂的属性,如href, src, style,或任何事件处理程序,如onmouseover。事件处理程序属性应该遵循HTML JavaScript数据值的规则#3,这一点非常重要。
复杂属性不应该转义的原因是什么,(这不应该用于复杂属性,如href, src, style)这会产生歧义或破坏属性的值吗?
https://www.owasp.org/index.php/XSS_ (Cross_Site_Scripting) _Prevention_Cheat_Sheet这并不是说它们不应该被转义,而是转义它们不足以使数据免受XSS的攻击。
转义数据可以阻止它脱离属性并开始一个新的属性或元素。
如果该属性是一个已经可以执行JavaScript的属性,那么这还不够。
这是脆弱的XSS:
$external_input = '"><script>alert("got you");</script>';
?><input class="<?php echo $external_input ?>">
但是如果转义$external_input
,那么属性值就变成了无意义的。这是无害的。
另一方面,即使对HTML进行了转义,也可以执行任意脚本。
$external_input = 'alert("got you");';
?><input onmouseover="<?php echo htmlspecialchars($external_input); ?>">
您需要确保数据对于任何数据格式的值都是安全的(然后您仍然应该转义它)。
在href
属性中放置值?确保它是一个URL,并且URL方案是您信任的(如http:
而不是javascript:
)。
在脚本中放置值?转义为JS(通常使用JSON编码器)。
等等
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 使用jQuery.attr()转义属性值
- 数据属性在动态添加时不以所需的格式呈现,不转义双引号
- 在 IE 中将“<”和“>”作为元素属性值的一部分进行转义
- JavaScript - 转义 JavaScript Object 属性值中的单引号
- 使用属性等于选择器时转义元素名称中的方括号
- 转义对象的所有属性
- 解析javascript中带有转义双引号属性的JSON对象
- 如何转义一个javascript变量在一个thyymleaf属性
- 在JSF组件属性中转义EL中的JavaScript引号
- 在Javascript中转义html属性中的双引号
- Jquery获取XML属性值,用转义不工作
- 转义HTML标记属性中的双引号
- Jquery -带有转义html的tag属性自动不转义
- 处理模型属性中的转义字符
- 使用Javascript在HTML5数据属性中转义引号
- 剃刀转义数据属性中的单引号
- HTML属性转义
- 转义onclick生成的HTML具有带有CSS属性选择器的jQuery函数
- 如何正确转义css/js属性选择器[attr=value]中的属性值