(no-inner-html)app / components / sports.ts [717,9]:使用html()函数将字符串写入innerHTML是不安全的:$(' .tubing') html的(health.title)
if (health.title == "waterS") {
let that = this;
let recordPlayersWeight = {};
this.futureParrot = [];
this.pastParrot = [];
this.peacockService.getResponse(health.url, 'get', null)
.subscribe(recordPlayersWeight => {
this.gridData = recordPlayersWeight.waterDtos;
that._recordPlayersWeightSource.recordPlayersWeight(this.gridData);
},
err => {
}
);
}
that.window = $("#TigerwatersPopup");
that.window.kendoWindow({
width: "60%",
title: false,
visible: false,
resizable: false,
actions: [],
draggable: false,
modal: true,
open: function() {
$("html, body").css("overflow", "hidden");
that.isVisible = true;
$('.tubing').html(health.title);
答案 0 :(得分:0)
当您使用jQuery的.html()
函数时,可能会意外地向您的页面添加“不安全”元素,例如iframe标记或源标记。如果您添加的html是由恶意用户提交的(例如,作为查询的一部分或在表单中输入的数据),您将给他们一种攻击方式。这是代码注入攻击的一种形式(参见https://en.wikipedia.org/wiki/Code_injection)。
在您的情况下,您似乎只是想将纯文本放入.tubing
元素,因此更安全
$('.tubing').text( health.title );
这样做是为了“逃避”任何HTML特殊字符,例如<
或>
,以便它们显示为文本而不是被视为元素。这是安全的,可以防止攻击者注入代码,也不会触发lint规则。