Javascript 如何防止在使用.val()时引入XSS漏洞?
我将未初始化的用户输入存储在数据库中,然后在输出时转义它 如果我在输入中输入>并将其保存在数据库中,然后加载一个转义数据的页面,将其放回输入中,页面源显示:Javascript 如何防止在使用.val()时引入XSS漏洞?,javascript,jquery,html,xss,Javascript,Jquery,Html,Xss,我将未初始化的用户输入存储在数据库中,然后在输出时转义它 如果我在输入中输入>并将其保存在数据库中,然后加载一个转义数据的页面,将其放回输入中,页面源显示: ... value=""><svg/onload=alert(3)>" ... 如你所见,它逃走了 但是,如果我运行以下代码: $(".somediv").html($("#myinput").val()); 然后将以下内容放入元素中: ""><svg/onload
... value=""><svg/onload=alert(3)>" ...
如你所见,它逃走了
但是,如果我运行以下代码:
$(".somediv").html($("#myinput").val());
然后将以下内容放入元素中:
""><svg/onload=alert(3)>"
然后弹出警报框
我做错了什么?我认为在输出中转义数据是我所需要做的一切,但显然,当使用jQuery操作DOM时,这是不正确的。如果要设置文本,请使用.text。属性值中的实体已被解释,>是属性的值
$(".somediv").text($("#myinput").val());
$'destination'.text$'source'.attr'title';
如果要设置文本,请使用.text。属性值中的实体已被解释,>是属性的值
$(".somediv").text($("#myinput").val());
$'destination'.text$'source'.attr'title';
您可以使用div.innerHTML=str而不是$div.htmlstr来避免脚本的执行并保持格式,但是您仍然需要监视内联事件处理程序。您可以使用div.innerHTML=str而不是$div.htmlstr来避免脚本的执行并保持格式,但是您仍然需要监视内联事件处理程序。