Mohl by mi někdo vysvětlit v čem je zvýšena bezpečnost, když už například nyní nefunguje následující:
1. webová aplikace natažená přes https
2. uvedená aplikace pracuje se soukromými daty
3. uvedená aplikace také některá data (v JSON či XML) získává z veřejných zdrojů přes XMLHttpRequest a doplňuje tak pro uživatele soukromá data
Firefox (a ne jen on) zavedením CORS takovou aplikaci neumožňuje provozovat (až na obezličku JSONP či na http hlavičky origin, které to povolí). Nyní zavedením nemixovaní https s http uvedenou nemožnost posiluje (již nelze použít obezličku JSONP ani hlavičky Origin). Jediným řešením se tak již stává jen možnost, že aplikace musí všechny data tahat přes mateřský server, který pokud jde o data z jiných zdrojů dělá proxy. Jsem slepý, ale vidím jen komplikaci a žádné zvýšení bezpečnosti. Dokonce by se dalo přemýšlet o ponížení bezpečnosti mateřského serveru, který dělá proxy a pokud proxy není zcela dobře udělána.
Dále pokud se nepletu Firefox v případě mixování přes XMLHttpRequest vůbec žádnou bublinu s možností povolit nenabídne.
Navíc díky CORS je již nad síly Firefox pokud bod 1. ve scénáři změním tak, že webová aplikace bude natažena z lokálního souborového systému (tedy ne přes https).
Uvedené restrikce dle mne nesouvisí z bezpečností, ale s vytvářením komplikací pro webové aplikace, které sbírají na klientské straně data z různých zdrojů.
Uff. Ještě jednou a pomalu. Aplikace mixuje data z různých zdrojů! Část zdrojů je soukromých (je nutné použít https). Část zdrojů dat je zcela veřejných a nejsou pod kontrolu tvůrce aplikace. Aplikace tahá z těchto různých zdrojů data a poskytuje je uživateli.
Příklad:
* aktuální GPS polohy rodinných příslušníků - jde o soukromá data (https a šifrování)
* vyhledávání GPS poloh ulic a obcí dle názvu - využito Nominatim API z nominatim.openstreetmap.org (http://wiki.openstreetmap.org/wiki/Nominatim) - veřejná data a aplikace nepovažuje za problém, že lze monitorovat co uživatel hledá
Mno ... je videt ze o bezpecnosti vis kulovy.
Pokud nekdo leze na web pres https, tak (v 99%) predpoklada, ze sifrovana je veskera komunikace. Jinak je to totiz pro kocku.
Ve tvem uzesnem priklade je to pro kocku hned nekolikrat, ty sice zasifrujes polohu ... ale pak ji vykecas openstreetmap (coz je prvni pruser) a nasledne ji posles nesifrovanym kanalem zpet (coz je dalsi pruser). Tak proc tu vubec sifrujes? Naprosto marna snaha.
Problém toho mixování HTTPS a HTTP zdrojů je v tom, že jako útočník na síti (MITM) můžu zaútočit na HTTP stream a cokoliv tam přidat/změnit. Ve finále ti tedy do stránky podstrčím třeba JavaScript, který bude dělat, co já potřebuju - třeba odposlechne zadávané heslo a pošle mi ho. I když je v prohlížeči nakrásně zadána HTTPS adresa, stejně je možné spojení ovlivňovat třeba přes obrázek, který se načítá odjinud bez šifrování. To je jádro problému.
mc tu od počátku píše o tom, že stahuje (chce stahovat a nemůže) DATA. Ne html / js co by se mělo browserem vykreslit / vykonat. Do dat si může MITM zasahovat jak chce, ale jediné čeho tím dosáhne, že je pokazí, což s ohledem na jejich účel mc-ovi nevadí. Ne že by něco svého spustil. Pochopil to tu někdo?
Obávám se, že se točíme v kruhu.
Jak je možné při příjmu dat například v JSON docílit toho, že tato data budou interpretovány jako nějaký script? Příjem byl vyvolán pomocí XMLHttpRequest scriptem z mateřské https stránky a tedy zacházení s daty má tento script zcela pod kontrolou. Připouštím že data v JSON někdo změní třeba na nějaký script, ale jeho interpretaci je nutné úmyslně vyvolat v mateřském skriptu - samo se to neudělá. Tak jak?
Možná nám s P_V něco opravdu nedochází, ale já tu opravdu nevidím žádný jasný příklad, kde je problém (kromě případů, že programátor používá něco co nemá). Ze zabezpečeného serveru je stažena aplikace, která koná svůj kód a jedním z jejich úkolů je natáhnout data z nezabezpečeného serveru. Samozřejmě, že se ta aplikace musí chovat k datům tak, aby data z nezabezpečeného serveru nemohly být náhodou interpretována jako programový kód. Také musí mít k datům jistou normální skepsi. V případě javascriptu je tedy naprosto vyloučené použít přiřazování dat do nějakého innerHTML či třeba použít eval. Ale máme tu takové JSON.parse(req.responseText) a dále můžeme ověřit zda vše dopadlo dobře a data mají očekávaný vzhled a dál s nimi jako s daty pracovat. Pak tu máme document.createTextNode, který pomůže například přiteklá data zobrazit.
Při požadavku na data na nezabezpečený server neutíká žádný referer ani cookie související se zabezpečeným serverem.
Kde se tedy z čistajasna vezme ten programový kód, který není ze zabezpečeného serveru a který najednou začne být i jako programový kód interpretován a vykonáván a začne provádět nějakou svoji špinavou práci? Prosím o nějaký příklad!
Copak normální aplikace začne například interpretovat data co přitekly z SQL serveru? Pokud není čuňácky napsaná tak nic takového činit nebude!
Ano, pokud aplikace tahá script přes http tak k jeho změně prostřednictvím MITM může dojít a ten script může dělat neplechu a může tak dojít k prozrazení dat co prozrazena být neměla - tomu rozumím. Ovšem to je problém tvůrce aplikace, že dělá takovou chybu.
Já ovšem netahám přes http nějaký script, který pak na klientské straně něco vykonává, ale data (v JSON či XML). Ano, jejich změna prostřednictvím MITM může vést k chybným závěrům. Ovšem ty data jsou tahána z veřejného zdroje a je nutné na ně pohlížet s rezervou (a to i bez ohledu na http a tedy i možnost MITM). Pokud tedy na uvedená data pohlížím s jistou skepsí, kde je problém? Může mi copak útočník při MITM, kdy provede změnu dat v JSON či XML způsobit nějaké problémy? Samozřejmě aplikace si nesmí dovolit například takto přijatá data interpretovat jako programový kód.
Navíc řešením restrikcí na straně prohlížeče je proxy na straně mateřského serveru. Tedy uvedená restrikce provedla hlavně komplikaci pro programátora aplikace. Veřejná data tak musí natáhnout místo klienta napřed server a to přes nezabezpečené http (kde hrozí MITM) a pak je poslat klientovy. Kde je tedy přínos v bezpečnosti? NIKDE!
Hele, tohle je marnej boj. Nebreč, Google is pro změnu myslí, že je bezpečnější tahat soubory z netu než je číst z disku a na stovky stížností reagují jedině tím, že zakážou komentáře a napíšou, že si máš napsat vlastní prohlížeč.
https://code.google.com/p/chromium/issues/detail?id=4197
https://code.google.com/p/chromium/issues/detail?id=47416
https://code.google.com/p/chromium/issues/detail?id=70088
Chrome nevěřím. K Firefox mám mnohem větší důvěru. Bohužel tady jsem jaksi zmaten. Mám obavu, že změny související s restrikcemi kolem možností mixovat data (zavedení CORS či http s https) nesouvisí přímo s bezpečností. Myslím, že to jsou klacky pod nohy malým a hodí se velkým hráčům jako je Google, Microsoft, Facebook. Ti totiž usilují o to, mít všechna data - a na co mixovat data s někým jiným, když mám vše?
No ale to je úplně jiná situace než jsi popsal původně. Na nezabezpečeném webu můžeš (alespoň u IE) zobrazovat zabezpečený obsah. Běžně toho využívá Google Calendar, Nějaká blbost od fuckBooku,... kdy se přebírají data z jiného, navíc zabezpečeného, serveru (domény).
Lze to pochopitelně zakázat (ve výchozím nastavení pro zónu Internet je to ale povoleno) a také je většinou uživatel browseru, návštěvník takovéto web-stránky, upozorněn na mixování obsahu. Hrábneš na ESC a zabezpečený obsah se ti nenačte.
Většinou jde o nechtěné sračky (může jít i o šmírování) a blokuji takový obsah trvale a na všech webech.
Webová aplikace opíjet rohlíkem může.
Ještě jednou, jaký vidíte rozdíl z hlediska bezpečnosti mezi za 1. a za 2.?
1.
.web server s aplikací ---https---> klient . data z jiného webu ---http--->
2.
. web server s aplikací ---https---> klient .data z jiného webu ---http---> web server s aplikací ---https--->
V bezpečnosti tam moc rozdíl nevidím? No možná za 2. je méně bezpečné - ale k tomu jsem nucen protože prostě ty data z jiného webu chci!
To není pravda. Není možné takto odposlouchávat komunikaci s vaším serverem. Nikdo přes to spojení nechytí heslo, obsah komunikace, nic.
Příklad: když bude Gmail v rohu ukazovat počasí a obrázky sluníčka a mráčků si váš prohlížeč bude stahovat z HTTP serveru ČHMU, může správce počasnického serveru odposlouchávat hesla, maily, ukradnout session, může všechno. Kdyby to Google tahal na své straně a posílal vám to po bezpečném HTTPS spojení, pak může zlý meteorolog leda tak vyměnit mráček za sněhuláka, ale spojení uživatele s Gmailem neovlivní.
Předpokládám, že hlavní stránka (Gmail) je ve Vašem případě přes https spojení. Jak může ve vašem uvedeném případě ČMHU na které směřuji HTTP GET požadavky na data (chci je v JSON či XML) pomocí XMLHttpRequest odposlouchávat hesla či získat maily a podobně? Jak může z HTTP GET požadavku, který je vhodně sestaven, získat něco co komunikuji z Gmail přes HTTPS? Prohlížeč mu nesmí přece samovolně taková data předávat (ani referer tam nesmí putovat). Musí se to chovat naprosto jako když bych ten HTTP GET požadavek provedl v jiném okně. Nechápu tedy jak k těm datům se může ČMHU dostat.
Hele už jsi to tu plácal mockrát... Je to jednoduché. Ta aplikace (případně web v jiných diskusích) si prostě nezaslouží běžet jako zabezpečený. Zabezpečené to prostě není, jde naopak jen o zdánlivou bezpečnost (na oko) a velmi snadný způsob jak šmírovat kohokoli (teď se bavím o automatickém načítání obrázků z nezabezpečených zdrojů).
Neříkám, že tento model nemůže mít mnohdy dobrý důvod k životu (od někoho komu důvěřuji přebírám data z různých zdrojů), ale pokud to člověk potřebuje tak si browser takhle nastaví.
Špatné spíše je, že tvůrci browserů nepočítají s tím že mix režim chce uživatel snadno povolit jen určitým webům. Přenastavit vždy celý browser je harakiri, proto dávám přednost nemixovat, jako výchozímu nastavení které se hodí pro většinu situací. Já například jedno fórum již dlouho přesvědčuji, že když chtějí mít i zabezpečenou verzi musí zabezpečit i obrázky, protože uživatelé je jinak nemusí vidět.
Tak jim tam prostě udělej na ukázku trochu bordel... aby to pochopili. Já to řeším tak, že daný web nepoužívám a pomlouvám ho kudy chodím.
Stejně dopadlo i ono fórum (tentokrát pomlouvat nemohu), když nejde o životně důležitou informaci tak ho nenavštěvuji, myslím jsem našel už i náhradu. Jiné fórum kde se shromažďují ti kterým to staré fórum příliš nevyhovovalo a zpravidla tedy ti chytřejší s kvalitnějšími názory na diskutované téma.
Narazivšív na problém prvního fóra ještě před povinnou registrací, jsem stejně udělal registraci tak aby se o jeden účet dělilo hned několik lidí. Nikdo nestojí o účty ani mizerné aplikace/fóra, potřebujeme jen ten prostor pro poznámky.