Угроза безопасности 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
Убедитесь, что изменения не содержат вредоносного кода.