;

Bezpečnost: Internet Explorer vs. Firefox

12. 11. 2009
Doba čtení: 5 minut

Sdílet

Historicky byla volba internetového prohlížeče z hlediska bezpečnosti jasnou záležitostí. Experti měli jasno a jedině sebevrah by upřednostnil Internet Explorer od Microsoftu před Mozilla Firefoxem, Operou nebo Apple Safari.

Dnes, kdy se Microsoft soustředí mnohem více na bezpečnost a uživatelé mají k dispozici také další alternativy typu Goo­gle Chrome, je však situace přece jen trochu odlišná.

Naši kolegové z CSO se nedávno neformálně dotazovali bezpečnostních expertů na to, který prohlížeč považují za bezpečnější. Firefox byl stále jasnou volbou pro mnohé, kteří nedají dopustit na časté a snadno aplikovatelné bezpečnostní záplaty a aktualizace. Internet Explorer ovšem rovněž získává pevnější půdu pod nohama, a to především od vydání IE7. Ve finálním součtu však odborníci shodně tvrdí, že úroveň zabezpečení IT ve firmě nelze soudit podle prohlížeče, jež využívá. Pokud by se totiž měly sečíst bezpečnostní nedostatky obou, vyšly by z toho podobně.

S rostoucím počtem útoků zaměřených na aplikační vrstvu (častým cílem bývají hlavně webové aplikace) je jasné, že výrobci internetových prohlížečů musejí pokračovat ve vylepšování svých produktů. Bezpečnostní experti však říkají, že z jejich pohledu je lepší strachovat se méně o browser a více o to, aby v organizaci byly na svém místě další bezpečnostní vrstvy. Jinými slovy, jeden bezpečný prohlížeč nikdy nenahradí komplexní zabezpečení.

V roce 2004, kdy Mozilla vydala Firefox verzi 1.0, ji mnozí uživatelé upřednostnili jakožto bezpečnější alternativu, než byl Internet Explorer. Reputaci IE tehdy hodně pošramotila doslova záplava útoků a neutuchající vlna nově zjišťovaných zranitelností. Někteří začali z důvodu vysokého počtu bezpečnostních aktualizací (Mozilla jich vydávala podstatně více než Microsoft) zpochybňovat také Firefox. Jeho popularita mezi bezpečnostními experty je však stále velice vysoká. Své preference v tomto směru nám sdělil autor bezpečnostních publikací Bob Radvanovsky: „Jedině Firefox. Browser, který neloguje stisky kláves, neuchovává nežádoucí data a dělá přesně, co po něm chci.“

Správce globální síťové bezpečnosti ve společnosti Colorcon Tudor Panaitescu říká, že Firefox je nedílnou součástí jeho snah vyhnout se používání Windows. „99,9 % času jedu na Firefoxu pod Linuxem. Za posledních několik let, co se snažím vyhnout používání Windows, se mi to také stoprocentně daří. Jsem dlouhodobým uživatelem Netscape suite a Mozilla Firefoxu a doporučuji je všem svým známým i celé rodině. Rozhodně je totiž považuji za to nejbezpečnější, co je k dispozici.“ Panaitescu si vyzkoušel práci s IE i Safari, dle svých slov však zatím nepřišel do styku s Google Chrome. „Internet Explorer je známý svými problémy s bezpečností, Safari zase není uživatelsky přívětivý a navíc neběhá pod Linuxem.“

Pod Linuxem ovšem nefunguje také drtivá většina podnikových a kancelářských aplikací, s nimiž pracují běžní uživatelé. Na platformě Microsoftu proto někteří, jako například Russ Hall z Perfect Security, sice upřednostňují Firefox, ten však musí být vylepšený. Dle svých slov za nejbezpečnější považuje Firefox 3 s pluginy NoScript a Sandboxie.

Internet Explorer se stále zlepšuje, stále však obsahuje mnoho bezpečnostních děr a měsíční aktualizace od Microsoftu pro něj téměř vždy zahrnují kumulativní update. Situace je však jednoznačně zcela­ odlišná od té před několika lety, kdy experti při pouhé zmínce o IE ohrnovali nos. To neznamená, že by dnes všichni nad tímto browserem bezvýhradně jásali, mnozí jej však přijímají, alespoň například jako prostředek pro prohlížení webových stránek nekompatibilních s Firefoxem.

V některých společnostech, jako například IS Decisions, se Internet Explorer využívá také kvůli kompatibilitě s ostatními produkty Microsoftu – Exchange, SQL Server, Dynamics CRM, Sharepoint, Griive, Live Meeting apod. Při používání jiného prohlížeče by firma mohla narazit na velice složité problémy s kompatibilitou.

Ostatním je zase vcelku jedno, který prohlížeč využívají. Ne, že by se nezajímali, ale zabezpečení obou nejpopulárnějších – IE i Firefoxu – považují za srovnatelné. IT profesionál pro oblast bezpečnosti, jenž si přeje zůstat v anonymitě, udává, že využívá jak IE, tak Firefox a zajišťuje, aby byly oba browsery opatřeny nejnovějšími aktualizacemi. Nadto má také k dispozici hardwarové zařízení firmy IronKey, s jehož pomocí ukládá svá hesla k použití on-line. Když tedy potřebuje pracovat na cizím PC, spouští browser ze zabezpečené paměti na USB.

Autor publikace Strategies & Tools For Corporate Blogging (Strategie a nástroje pro korporátní blogging) John Cass na závěr konstatuje, že nejvíce napadaným prohlížečem bude vždy ten s největším podílem na trhu. „Je nutno zmínit, že žádný browser není zcela bezpečný, existují však osvědčené postupy, při jejichž dodržování lze rizika napadení minimalizovat,“ dodává Cass.

'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }
OSZAR »