2017-10-11 1 views
3

얼마 전에 <img ...> 태그 또는 배경 스타일의 href 매개 변수에 문자열을 전달할 수 없다는 것을 깨달았습니다. SafeUrlSafeStyle 인스턴스 만 허용됩니다. 솔직하게, 간단한 호출을 사용하여 이미지 URL이나 스타일을 위생 할 수 있기 때문에 전체 개념을 얻지 못합니다. View 레이어에 신뢰할 수있는 백엔드 API에서 안전한 이미지 href를 마샬링하기위한 보안 파이프 라인을 만들 수 있다면 합리적 일 수 있습니다. Buf @angular/platform-browser API를 서비스에 삽입 할 수 없으므로 소스 신뢰도를 구별하는 데 도움이되는 컨텍스트가없는 컨트롤의 URL을 삭제해야합니다. 어쩌면 내가 뭔가를 놓친거야?SafeUrl/SafeStyle의 개념을 이해하지 못합니다.

답변

3

위생이란 내용을 안전하다고 생각하도록 Angular에게 명시 적으로 말합니다. Angular는 책임을지는 Angular의 마커 일뿐입니다. 안전하지 않은 콘텐츠에 대해서는 Angular가 콘텐츠를 확인할 필요가 없습니다. 콘텐츠의 출처와 해로운 콘텐츠를 포함 할 수없는 콘텐츠를 "sanitize"하는 콘텐츠 만 제공합니다. 당신이 표기 [innerHTML]="sanitizedConent 바인딩 속성을 사용하여 바인딩해야하는 이유 innerHTML="{{sanitizedContent}}"sanitizedContent이도 캐릭터 라인 도착과 (toString 호출) 및 마커 과정에서 분실 때문에

도있다.

+0

내 API에서 href를 얻는다면지도 조각을 반환하는 서블릿을 가리키며 물론 지금은 위생 처리 할 수 ​​있습니다. 하지만 DomSanitizer를 주입 할 수없는 앱 전반의 서비스에서 이러한 HREF를 가져옵니다. 그것은 모두 하류에 섞여 있으므로 선택의 여지가 없지만 모든 것을 살균합니다. 심지어 불투명 한 픽셀을 반환하는 악성 추적자 스크립트에 대한 참조 일 수도 있습니다. –

+0

왜 앱 전체 서비스에 DomSanitizer를 삽입 할 수 없습니까? –

+0

@ angular/platform-browser를 서비스에서 사용해서는 안되는 곳을 읽었습니다. –

관련 문제