Угроза безопасности ElementRef угловая 2

Почему ElementRef небезопасно использовать, если так, что мы можем использовать вместо этого?

Я использую этот ElementRef для просмотра или просмотра определенного HTML-тега, а затем для отправки в качестве определенной ширины после инициализации, но если это откроет угрозу безопасности, я не буду его использовать, и, честно говоря, я не понимаю, почему угловая 2 команды допускают такие недостатки безопасности в своих рамках.

Какую безопасную и лучшую технику использовать? Мой тестовый компонент ниже:

        import { Component, OnInit } from '@angular/core';

        @Component({
          selector: 'app-standard',
          template: ` <button type="button" #buttonW></button>`,

        })
        export class standardComponent implements OnInit {

          name: string = 'app-standard';
          viewWidthButton: any;

          @ViewChild( 'buttonW' ) elButtonW: ElementRef; 


          constructor() { 

            this.viewWidthButton = this.elButtonW.nativeElement.offsetWidth;
            console.log ('button width: ' + this.viewWidthButton);
          }

          ngOnInit() {
          }

        }

Угловая двухстраничная ссылка:

https://angular.io/docs/ts/latest/api/core/index/ElementRef-class.html

1 ответ

С помощью ElementRef не делает ваш сайт менее безопасным. Команда Angular просто говорит: "Эй, ты можешь использовать это, просто будь осторожен с этим".

Если вы используете только ElementRef для получения информации, как в вашем примере определенной ширины, никакой угрозы безопасности не существует вообще. Это другая история, когда вы используете ElementRef изменить DOM. Там могут возникнуть потенциальные угрозы. Такой пример может быть:

@ViewChild('myIdentifier')
myIdentifier: ElementRef

ngAfterViewInit() {
  this.myIdentifier.nativeElement.onclick = someFunctionDefinedBySomeUser;
}

Проблема в том, что он вставляется непосредственно в DOM, пропуская механизмы угловой санации. Каковы механизмы санации? Обычно, если что-то в DOM изменяется через Angular, Angular убеждается, что в этом нет ничего опасного. Однако при использовании ElementRef для вставки чего-либо в DOM Angular не может этого гарантировать. Таким образом, ваша ответственность заключается в том, что при использовании ElementRef, Важным ключевым словом здесь является XSS (межсайтовый скриптинг).

Подводя итог: если вы опрашиваете DOM для получения информации, вы в безопасности. Если вы измените DOM с помощью ElementRefУбедитесь, что изменения не содержат вредоносного кода.

Другие вопросы по тегам