使用数据绑定内置编码和解码不安全

时间:2014-08-21 09:22:52

标签: javascript jquery asp.net

我试图在数据绑定文本框中实现一些客户端编码/解码,其中数据在tb和db之间传递。

我到目前为止尝试的是带有visual basic的服务器端功能,但是当代码通过我发送时,在代码有机会运行之前得到编码错误,所以在我看来,JQuery / JS是实现这一目标的方法。

有人可以解释为什么使用htmlEncode和Decode不安全,如下所示以及如何使用客户端解决方法去除html?

提前致谢。

function htmlEncode(value) {
return $('<div/>').text(value).html();
}

function htmlDecode(value) {
    return $('<div/>').html(value).text();
}

1 个答案:

答案 0 :(得分:0)

这种方法的最大问题是它不对引号进行编码,因此如果输入用于属性值,例如,它可能会破坏html。

elem.innerHTML = '<div title="' + htmlEncode('" onhover="alert(1)') + '">X</div>';

很乐意将元素设置为<div title="" onhover="alert(1)">X</div>,然后它可以运行用户的脚本。