Internet je veřejný prostor, tato základní poučka by vám měla vždy pomoci v pochopení toho, že cokoliv umístíte na internet, může kdokoliv cizí získat, číst a využít. Facebook je součástí internetu, takže je to také veřejný prostor. To, že něco označíte jako „jen pro přátele“ nebo to snad schováváte uvnitř privátní komunikace v Messengeru, by vás nemělo zmást. Pořád je to veřejný prostor. Pořád mohou další lidé získat to, o čem si možná myslíte, že to získat nemohou.
Ve Why you shouldn’t share links on Facebook popisuje Inti De Ceukelair velmi praktický příklad toho, že Facebook je „děravý ze samé podstaty“. Je to pěkný příklad v tom, že se jedná o sdílení odkazů v privátní komunikaci (případně i v rámci ne zcela veřejných příspěvků na vašich účtech) a není nepodobný tomu, o čem v dubnu byla řeč v Gone in Six Characters: Short URLs Considered Harmful for Cloud Services v souvislosti se zkracovači adres.
Facebook všechno ukládá v Open Graph databázích
Každou URL, kterou nasdílíte na Facebooku, dostanete do Open Graph databáze. Vloží se tam samotná URL, dostane nějaké číselné ID a sleduje se, co se s ní dál děje. Facebook při prvním použití URL navíc onu adresu navštíví a stáhne si do databáze základní informace – titulek, perex (citaci), obrázky použitelné pro sdílení a různé další informace (tohle ještě v Open Graph databází nekončí, viz dále).
To, co stáhne a uloží, záleží na META značkách a na tom, co dokáže ze stránky vytáhnout. Pamatuje si to 24 hodin, aby při dalším sdílení URL nebylo nutné absolvovat toto stahovací kolečko. Je dost dobře možné, že si stahuje a ukládá i celý obsah URL.
TIP: Co si z URL stahuje (a co už z nějaké stáhl), můžete zjistit pomocí Sharing Debugger stránky. Adresa www.lupa.cz je tam například uložena jako ID 448211469045, ale tuhle Open Graph adresu si můžete prohlédnout, jenom pokud máte přístupový token. Nebo použijete Graph API Explorer. Ten vám z onoho ID umožní zjišťovat další věci s ním související.
Tohle samozřejmě znamená, že pokud někomu v Messengeru pošlete odkaz, každý takový odkaz se dostane do Open Graph databáze. Jsou tam uloženy všechny odkazy, které kdy kdo použil na Facebooku a při jejich dalším použití Facebook používá už dříve vytvořený objekt. Což samozřejmě znamená, že pokud víte ono ID, můžete je všechny najít.
Ale také to znamená, že žádný neveřejně poslaný odkaz ve skutečnosti není neveřejný. ID je numerické, stačí prostě začít od jedničky a pokračovat dál (ve skutečnosti musíte začít od čtyřky, což je první existující ID, a je to Mark Zuckerberg).
Vše pracuje jak má
Čistě teoreticky by Facebook mohl u odkazů posílaných v neveřejné komunikaci u každého objektu evidovat odpovídající „práva“, tedy to, komu je může ukázat. Slovo „teoreticky“ je důležité, protože by to v některých případech bylo poměrně komplikované, ale na druhou stranu, nemožné to není. Facebook to ale nedělá.
Když Inti De Ceukelair svůj objev (není až tak objevem, tohle je opravdu vlastnost Facebooku už roky, stejně jako je to už roky vlastnost zkracovačů URL) přes Facebook Responsible Disclosure nahlásil jako chybu, dočkal se klasické univerzální odpovědi a zásadního nepochopení. A bohužel se s tím spokojil a jediné, co udělal, je, že to sepsal do výše uvedeného Why you shouldn’t share links on Facebook.
Jak se odkazy dostanou do Open Graph databáze
Odkazy se do Open Graph databáze dostávají až poté, co na ně někdo klikne. Začíná to tím, že je někdo na Facebooku vloží do políčka pro psaní příspěvku na zdi nebo v chatu a následně odešle. Případně je někdo odešle v komentáři pod příspěvkem. Protože to je okamžik, kdy Facebook potřebuje stáhnout titulek, perex a obrázek a uložit si tyto informace pro další sdílení. Dostanou se tam, dokonce aniž byste příspěvek či komentář odeslali, což je dáno tím, že vám Facebook zobrazuje náhled. Ale pozor, přístupné přes Open Graph, tedy přes číselné ID, budou až poté, co na ně někdo klikne.
Dá se to snadno ověřit tak, že si například vezmete www.pooh.cz/uplnynesmysl (můžete si vytvořit něco podobného nového), uděláte copy-paste do pole pro vkládání příspěvku (natáhne se 404 – NOT FOUND), ale příspěvek prozatím neodešlete. Pak se stačí podívat do Sharing Debuggeru na onu uměle vytvořenou nesmyslnou adresu. Uvidíte, že si ji již pamatuje, ale nemá přidělené Open Graph ID.
To dostane až poté, co váš příspěvek zveřejníte a na adresu kliknete. Nový pohled do Sharing Debuggeru vám ukáže, že už má ID (1155173454513455). V Open Graph databázi pak tato URL zůstane napořád, smazání původního příspěvku nic neodstraní. Open Graph stejně s mazáním uložených věcí poněkud nepočítá, takže také nic nového.
Proč je to nebezpečné?
Nebezpečné je to stejně jako u zkracovačů adres (goo.gl, bit.ly atd.) při použití odkazů na soubory, které nemají být veřejně přístupné. Byť k tomu je nutné dodat, že pokud na internet umístíte veřejně přístupný soubor s důvěrnými informace a jeho „nepřístupnost“ řešíte jen tím, že „nikdo neví adresu“, děláte něco špatně tak jako tak.
Procházet Graph API na výskyt všech URL je velmi jednoduché, byť je to časové náročně (Facebook se soustavnému dolování dat bude bránit, ale i to má řešení v použití množství „účtů“ pro procházení). Lze předpokládat, že neveřejné zajímavé věci budou v úložištích a na webech, které nejsou zpravodajské a obecně veřejně přístupné. V procházení lze navíc kdykoliv pokračovat od naposledy použitého ID.
V praxi to znamená, že pokud někomu přes Facebook pošlete třeba odkaz na soubor obsahující přístupové údaje, není to nejlepší nápad. Stejně tak byste přes Facebook neměli posílat odkazy na smlouvy, finanční informace, osobní údaje a informace. Prostě pamatujte: Facebook je veřejný prostor.