2017-08-08 26 views
6

Dostaję od strun API kodu HTML, który może zawierać osadzonych filmów z następujących usług:Jak sprawdzić, czy html z elementami iframe jest bezpieczny?

  • youtube.com,
  • vimeo.com,
  • dailymotion.com,
  • Prezi .com

Jeśli jestem pewien, że jest wystarczająco bezpieczny sposób można przekonwertować je do zaufanego SafeHtml (ominąć Sanitizer kątowej za):

this.safeHtml = this._sanitizer.bypassSecurityTrustHtml(this.htmlFromApi); 

a następnie umieścić go na stronie w taki sposób:

<div [innerHtml]="safeHtml"></div> 

pytania:

  1. który sprawdza muszę wykonać, aby mieć pewność, że łańcuch jest wystarczająco bezpieczne? (nie zawiera osadzonych skryptów i prowadzi tylko do jednej z tych czterech stron bez trudnych przekierowań)?

  2. Czy jest sens, aby dodać jakoś tych witryn do wyjątkami odkażającego kątowej za? I jak to zrobić, jeśli tak?

Z góry dziękuję!

p.s. Widziałem to podobne pytanie: How to check if string of HTML is safe? Mam jednak nadzieję, że jest coś świeższego i ważnego dla najlepszych praktyk Angulara:

+1

moim 2 centów. nic nie jest naprawdę bezpieczne. Nie ufałbym żadnemu źródłu, ale zależy to od twoich potrzeb/ograniczeń bezpieczeństwa. –

Odpowiedz

2

Chociaż nie jest to odpowiednia odpowiedź kątowa; chcesz Content Security Policy nagłówek na swojej stronie internetowej, w celu umożliwienia tylko cerain stron internetowych, które mają być dostępne poprzez (i) ramek.

Przykład:

Content-Security-Policy: 
     default-src 'self' https:; 
     script-src 'self' https:; 
     frame-src: https://*.youtube.com https://*.vimeo.com 
        https://*.dailymotion.com https://*.prezi.com; 

(Nagłówek jest multi-wyłożone do czytania jasność tylko)

Ten CSP ustala pewne zasady swojej stronie tak, aby:

  • Domyślnie pozwala tylko odniesienia do samej stronie („ja”) i tylko za pośrednictwem protokołu HTTPS.
  • Skrypty mogą być [bezpiecznie dostępne] plikówNOT skryptów śródliniowych, a pliki te muszą być wywoływane z tej samej witryny.
  • (i)frames ze strony internetowej może wywołać tylko określonych nazw domen. Włożyłem typy adresów Https tutaj jak to jest najlepsze praktyki, a także należy pamiętać, że będzie to * odmówić dostępu do symbolu zastępczego, takich jak adresy https://y2u.be, ale można dodać te odmiany, jak trzeba.

Powyższa deklaracja CSP spełnia dokładnie to, czego potrzebujesz w pytaniu, a tym samym eliminuje potrzebę filtrowania niektórych domen za pomocą odkażacza safeHtml.

Odtłuszczacz będzie prawdopodobnie prawdopodobnie musiał zostać przekazany - jakoś - ale nie wiem kątowe, więc nie mogę odpowiedzieć na ten szczegół.

Read more about the frame-src CSP directve.

Edit

Bardziej elastyczne przykładem, jeśli użytkownicy korzystają z połączenia non-TLS lub, jeśli strona nie jest TLS zabezpieczone, w tym także przykładem dla krótkich adresów URL, za:

Content-Security-Policy: 
     default-src 'self'; 
     script-src 'self'; 
     frame-src: https://*.youtube.com https://*.vimeo.com 
        https://*.dailymotion.com https://*.prezi.com 
        http://*.youtube.com http://*.vimeo.com 
        http://*.dailymotion.com http://*.prezi.com 
        https://youtu.be; 
+0

Dzięki @Martin! –

Powiązane problemy