angular
2017-12-29 12 views 0 likes 
0

나는 html 콘텐츠를 클래스에서 주입하려고합니다. 대신 html 요소 대신 문자열을 사용합니다. 무엇을 잘못하고 있습니까?각도 2 html injection은 html 요소 대신에 문자열을 출력합니다.

각 버전 : 볼록 CLI : 1.0.0-beta.20-4

HTML 콘텐츠 :

<div [ngStyle]=getStyles()>{{getData()}}</div> 

GetData의() 리턴 값 :

"<span style='color:#5999B6'>this.data</span>" 

this.data 문자열입니다

+0

이 방법'GetData의() '함수가 보이는 않는 도움이 될 것입니다 희망? 너 진짜 돌아온거야? –

답변

1

Angular는 보안을 위해 템플릿에 HTML을 직접 삽입 할 수 없습니다. 당신은 당신의 html을 위생해야합니다. HTML을 살균하려면 다음 url을 따르십시오. https://netbasal.com/angular-2-security-the-domsanitizer-service-2202c83bd90

+0

사실, 제작에 사용하고 있습니다 ^^. 문제는 링크 된 주제가 템플리트에 문자열을 삽입하기 전에 위생 처리를 우회하도록 요청한다는 것입니다. 이 문자열이 사용자 입력에 연결되어 있다면 XSS 주입으로 이어질 것입니다. 살균제는 여기에 있어야합니다. – Supamiu

0

innerHTML :

을 사용하여 html로 바인딩하고 싶습니다.
<div [ngStyle]="getStyles()" [innerHTML]="getData()"></div> 

는 그러나 조심 , 당신은 XSS 문제를 방지하기 위해 getData()에 의해 반환 된 HTML을 완벽하게 제어 할 수 있어야합니다.

 관련 문제

  • 관련 문제 없음^_^