在jQuery中使用.attr(' href',url)时防止XSS

时间:2015-11-19 14:10:13

标签: javascript jquery security xss code-injection

我想更新jQuery中的href标记。数据不受信任。我试图了解如何制作恶意输入以引起XSS类型攻击。

<a href='http://example.com' class='link'>Link</a>

我的理解是,下面的函数应该意外终止href标记并创建一个新属性onclick,但它不起作用。

$('.link').on('click', function(e){
    e.preventDefault();
    $(this).attr('href',"' onclick='alert(\"ok\")'");    
});

这里是小提琴:http://jsfiddle.net/c1d7tuda/1/

P.S。最终目标是将_.escape()用于HTML实体,但希望证明其用法。

1 个答案:

答案 0 :(得分:0)

如果您使用未经验证的用户输入更新链接的href属性,则恶意用户可以提供javascript:alert(0)作为href值。然后,如果用户点击该链接,它将执行恶意用户的任意javascript。