Vyt*_*tas 63 javascript security xss jquery
我有来自用户的未转发数据.
所以这样使用是安全的:
var data = '<test>a&f"#</test>'; // example data from ajax response
if (typeof(data) === 'string')
$('body').text(data);
Run Code Online (Sandbox Code Playgroud)
我可以像这样使用或者有一些问题,比如编码或某些特定的符号,我应该小心并添加更严格的验证?
Jam*_*ice 57
当您使用该text
方法设置元素的文本时,jQuery在createTextNode
内部使用,它会转义所有特殊字符.
来自jQuery文档:
我们需要注意,此方法会根据需要转义提供的字符串,以便在HTML中正确呈现.为此,它调用DOM方法
.createTextNode()
,该方法用其HTML实体等价物替换特殊字符(例如<
for<
)
所以是的,应该是安全的.这是你在jsfiddle中的例子.请注意标记如何显示为文字文本.
Mat*_*att 14
因为XSS攻击依赖于能够插入DOM节点(<img />
,<script />
)等,并且jQuery.fn.text()
不支持这一点,所以它完全是XSS安全的.
正如您在此基本示例中所看到的,所有可能的HTML标记都是在createTextNode
内部使用jQuery的结果编码的:
jQuery('div').text('<test>a&f"#</test>');?
Run Code Online (Sandbox Code Playgroud)
因此,实际插入的内容更加平等;
jQuery('div').html('<test>a&f"#</test>');?
Run Code Online (Sandbox Code Playgroud)
将结果插入DOM时仍需要小心 - 请参阅:使用JavaScript和JQuery的跨站点脚本漏洞.
但是,要设置元素的文本,文本应该是XSS安全的.