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
- Content Security Policy — meta http-equiv
- XSS przez innerHTML i zapobieganie atakom
- Sandbox iframe i Permissions Policy
- HTTPS i Subresource Integrity