si dovrebbe fiducia il primo HTML
prima di iniettarlo. Devi usare lo DomSanitizer
per una cosa del genere. Un elemento <h3>
è considerato sicuro. Un elemento <input>
non lo è.
Cambia la tua FaxSendComponent
a qualcosa di simile:
export class FaxSendComponent {
private _inputpdf: string = '<input type="text" name="fname">';
public get inputpdf() : SafeHtml {
return this._sanitizer.bypassSecurityTrustHtml(this._inputpdf);
}
constructor(private _sanitizer: DomSanitizer){}
}
E avere il vostro modello di rimanere lo stesso di questo:
<div [innerHTML]="inputpdf"></div>
Un po 'heads-up però:
ATTENZIONE : chiamare questo metodo con dati utente non attendibili espone la tua applicazione ai rischi di sicurezza XSS!
Se si prevede di utilizzare questa tecnica di più, è possibile provare a scrivere un Pipe
per svolgere questa attività.
@Pipe({
name: 'sanitizeHtml'
})
export class SanitizeHtml implements PipeTransform {
constructor(private _sanitizer: DomSanitizer){}
transform(v: string) : SafeHtml {
return this._sanitizer.bypassSecurityTrustHtml(v);
}
}
Se si dispone di un tubo come questo, il vostro FaxSendComponent
cambierà a questo:
@Component({
selector: 'fax-send',
template: `<div [innerHTML]="inputpdf | sanitizeHtml"></div>`
})
export class FaxSendComponent {
public inputpdf: string = '<input type="text" name="fname">';
}
Perché non controllare il collegamento nel messaggio di avviso? – undefined
Lo controllo, e ci provo ma non funziona –
Volevo solo dire che i backtick non funzionano come soluzione per questo problema. Sono troppo nuovo per commentare sotto il suggerimento. I backtick sono comunque buone pratiche. –