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

标签 javascript jquery html xss

我将未经过滤的用户输入存储在我的数据库中,然后在输出时将其转义。

如果我输入 "><svg/onload=alert(3)>进入输入并将其保存在数据库中,然后加载一个转义数据的页面,将其放回输入中,页面源显示:

... value="&quot;&gt;&lt;svg/onload=alert(3)&gt;" ...

如您所见,它已转义。

但是,如果我随后运行这段代码:

$(".somediv").html($("#myinput").val());

然后将以下内容放入元素中:

""><svg/onload=alert(3)>"

弹出警告框。

JSFIDDLE

我在这里做错了什么?我认为在输出时转义我的数据是我需要做的全部,但显然在使用 jQuery 操作 DOM 时情况并非如此。

最佳答案

如果你想设置文本,使用.text() .属性值中的实体已被解释,并且 ""><svg/onload=alert(3)>" 属性的值。

$(".somediv").text($("#myinput").val());

$('#destination').text($('#source').attr('title'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="source" title="&amp;&quot;&lt;">Hover over me!</div>

<div id="destination"></div>

关于javascript - 如何防止在使用.val()时引入XSS漏洞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29527420/

相关文章:

javascript - 如何根据字符串在每个元素中的位置对 PHP 数组进行排序?

javascript - 如何在 jQuery 中无限水平滚动图像?

jquery - 如何修改此代码以仅影响正常链接? (基本的 jQuery)

javascript - jQuery .click 未触发 TD

javascript - 为什么 JSX 中只能使用表达式,而不能使用语句?

jquery - input[type=text] 提交与显示不同的值

html - Flex-grow 元素上的 width 属性

asp.net - 如何在不使用 ul li 或 navbar 的情况下在 bootstrap 中水平居中全长 div

javascript - 如何在页面重新加载时保留 jqGrid 中的搜索过滤器?

javascript - 简化 jQuery 代码 - Slide 和 SlideToggle