Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何防止在使用.val()时引入XSS漏洞?_Javascript_Jquery_Html_Xss - Fatal编程技术网

Javascript 如何防止在使用.val()时引入XSS漏洞?

Javascript 如何防止在使用.val()时引入XSS漏洞?,javascript,jquery,html,xss,Javascript,Jquery,Html,Xss,我将未初始化的用户输入存储在数据库中,然后在输出时转义它 如果我在输入中输入>并将其保存在数据库中,然后加载一个转义数据的页面,将其放回输入中,页面源显示: ... value="&quot;&gt;&lt;svg/onload=alert(3)&gt;" ... 如你所见,它逃走了 但是,如果我运行以下代码: $(".somediv").html($("#myinput").val()); 然后将以下内容放入元素中: ""><svg/onload

我将未初始化的用户输入存储在数据库中,然后在输出时转义它

如果我在输入中输入>并将其保存在数据库中,然后加载一个转义数据的页面,将其放回输入中,页面源显示:

... value="&quot;&gt;&lt;svg/onload=alert(3)&gt;" ...
如你所见,它逃走了

但是,如果我运行以下代码:

$(".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来避免脚本的执行并保持格式,但是您仍然需要监视内联事件处理程序。