0Pricing
HTML Academy · Lekcja

Sandbox iframe i Permissions Policy

Ograniczanie osadzonych treści za pomocą sandbox i Permissions-Policy

Sandbox iframe i Permissions Policy to bezpłatna lekcja HTML Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej HTML Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs HTML Academy zawiera 4 lekcji w sumie.

Dlaczego używać sandbox w ramkach iframe

Niezaufana zawartość w ramce iframe (widżety innych firm, podglądy HTML przesłane przez użytkowników, osadzone gry) nie powinna mieć pełnego dostępu do możliwości przeglądarki. Atrybut sandbox ogranicza działania ramki iframe, zmniejszając szkody w przypadku, gdy okaże się ona złośliwa.

Pusty sandbox = maksymalne ograniczenie

<iframe sandbox src="..."> bez wartości nakłada wszystkie ograniczenia: brak skryptów, formularzy, wyskakujących okien, nawigacji najwyższego poziomu i wtyczek, a także traktowanie ramki jako unikalnego originu. Użyj tego jako punktu wyjścia i dodawaj tylko to, czego potrzebuje osadzona zawartość.

Dodawanie możliwości

Tokeny sandbox ponownie włączają określone możliwości: sandbox="allow-scripts allow-same-origin" zezwala na wykonywanie skryptów i dostęp do tego samego originu. Każdy token znosi jedno ograniczenie; połącz minimalny zestaw, którego ramka iframe rzeczywiście potrzebuje.

<iframe sandbox="allow-scripts allow-same-origin" src="https://embed.example.com/widget"></iframe>

Typowe tokeny

allow-scripts włącza JS. allow-forms włącza wysyłanie formularzy. allow-popups włącza window.open. allow-same-origin zapobiega traktowaniu ramki iframe jako unikalnego originu (jest potrzebne do localStorage). allow-top-navigation zezwala na nawigowanie oknem nadrzędnym.

Niebezpieczne połączenie

Połączenie allow-scripts z allow-same-origin w ramce iframe, którą również hostujesz, daje jej pełny dostęp do Twojego originu — w tym możliwość usunięcia własnego sandboxa. Łącz te opcje tylko dla zaufanej zawartości; w przypadku niezaufanej pomiń allow-same-origin.

Polityka uprawnień

Permissions Policy (wcześniej Feature Policy) określa, z których interfejsów API przeglądarki (kamery, mikrofonu, geolokalizacji, trybu pełnoekranowego i autoplay) może korzystać strona oraz jej ramki iframe. Ustaw ją na stronie nadrzędnej: Permissions-Policy: geolocation=() blokuje geolokalizację wszędzie.

Przyznawanie uprawnień poszczególnym ramkom iframe

Atrybut allow ramki iframe nadpisuje politykę strony nadrzędnej dla tej ramki: <iframe allow="camera; microphone"> zezwala na korzystanie z tych interfejsów API w ramce iframe, nawet jeśli domyślna polityka strony nadrzędnej ich zabrania.

<iframe
  src="https://video-call.example.com"
  allow="camera; microphone; fullscreen"
  sandbox="allow-scripts allow-same-origin">
</iframe>

Lista uprawnień

Specyfikacje obejmują stale rozwijającą się listę uprawnień — camera, microphone, geolocation, accelerometer, gyroscope, magnetometer, payment, usb, midi, fullscreen, autoplay, picture-in-picture i dziesiątki innych. Przeprowadź audyt tej listy i jawnie zabroń wszystkiego, czego strona nie potrzebuje.

Raportowanie naruszeń polityki

Permissions-Policy zgłasza naruszenia do skonfigurowanego endpointu, podobnie jak report-uri w CSP. Użyj tego podczas migracji: włącz ścisłą politykę, obserwuj, co przestaje działać, a następnie stopniowo rozluźniaj ją dla uzasadnionych funkcji.

Izolacja originu

W przypadku wrażliwych stron ustaw Cross-Origin-Opener-Policy: same-origin i Cross-Origin-Embedder-Policy: require-corp. Izoluje to stronę od okien cross-origin, chroniąc przed atakami czasowymi w stylu Spectre i umożliwiając używanie SharedArrayBuffer.

Obrona warstwowa

Sandbox + Permissions Policy + CSP + COOP/COEP tworzą wspólnie warstwową ochronę. Każdy z tych mechanizmów chroni przed inną klasą ataków. Osadzanie zawartości innych firm jest na tyle ryzykowne, że pojedyncze zabezpieczenie nie wystarcza — połącz je, aby obejście jednego zostało zatrzymane przez inne.

Testowanie

Użyj paneli Network i Issues w Chrome DevTools, aby wykrywać naruszenia sandboxa i uprawnień. Wiele naruszeń pozostaje niewidocznych (interfejs API po prostu zwraca undefined albo odrzuca promise); jawne endpointy raportowania pomagają wykrywać je na produkcji.

Sprawdzenie wiedzy

Dlaczego połączenie sandbox="allow-scripts allow-same-origin" może być niebezpieczne dla ramki iframe hostowanej w Twoim własnym originie?

Podsumowanie

Domyślnie używaj sandboxa dla ramek iframe i dodawaj tylko tokeny potrzebne zawartości. Unikaj allow-scripts+allow-same-origin dla niezaufanej zawartości. Używaj Permissions Policy do blokowania zaawansowanych interfejsów API w całej witrynie, a atrybutu allow ramki iframe do przyznawania wyjątków. Połącz te mechanizmy z CSP i COOP/COEP, aby uzyskać obronę warstwową.

Często zadawane pytania

Czy lekcja „Sandbox iframe i Permissions Policy” jest bezpłatna?

Tak — pełny tekst „Sandbox iframe i Permissions Policy” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu HTML Academy, przejdź na CoddyKit PRO. Kurs HTML Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Sandbox iframe i Permissions Policy”?

Ograniczanie osadzonych treści za pomocą sandbox i Permissions-Policy Ćwiczysz HTML Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć HTML Academy?

Nie wymagamy żadnego doświadczenia. HTML Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Sandbox iframe i Permissions Policy”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji HTML Academy?

Tak. Każda lekcja HTML Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Content Security Policy — meta http-equiv
  2. XSS przez innerHTML i zapobieganie atakom
  3. Sandbox iframe i Permissions Policy
  4. HTTPS i Subresource Integrity
← Powrót do HTML Academy