lint错误阻止做了一些研究,但没有成功

时间:2017-09-21 22:51:36

标签: javascript jquery angularjs typescript tslint

  • 我是tslint和打字稿的新手。
  • 我正在尝试解决此错误。
  • 你能告诉我如何解决它。
  • 我做了一些研究,但没有找到解决方案。
  • 提供以下代码。

(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);

1 个答案:

答案 0 :(得分:0)

当您使用jQuery的.html()函数时,可能会意外地向您的页面添加“不安全”元素,例如iframe标记或源标记。如果您添加的html是由恶意用户提交的(例如,作为查询的一部分或在表单中输入的数据),您将给他们一种攻击方式。这是代码注入攻击的一种形式(参见https://en.wikipedia.org/wiki/Code_injection)。

在您的情况下,您似乎只是想将纯文本放入.tubing元素,因此更安全

$('.tubing').text( health.title );

这样做是为了“逃避”任何HTML特殊字符,例如<>,以便它们显示为文本而不是被视为元素。这是安全的,可以防止攻击者注入代码,也不会触发lint规则。