Nowy rok zaczynamy zaskakującą wpadką Facebooka. Uruchomił on specjalnie na Sylwestra usługę „Midnight Delivery” (dostawa o północy), umożliwiającą doręczenie wiadomości w Nowy Rok. A przy okazji udostępniającą jej treść całemu światu.
Sama idea ciekawa – Facebook postanowił umożliwić swoim użytkownikom zaplanowanie dostarczenia życzeń noworocznych dokładnie o północy. Pomysł może nie najnowszy, ale jego wdrożenie bez wątpienia mogło ułatwić życie nadawcom i sprawić przyjemność odbiorcom wiadomości.
Jack Jenkins, bloger z Wielkiej Brytanii, postanowił przyjrzeć się poziomowi prywatności przesyłanych w ten sposób wiadomości. Spojrzał zatem na URL, pozwalający na odczytanie życzeń, który wyglądał tak:
http://www.facebookstories.com/midnightdelivery/confirmation?id=76188
Oczywiście pierwszym testem była zmiana ID wiadomości. Zgadnijcie, co zobaczył? Oczywiście zgadliście – zobaczył cudzą wiadomość.
Część życzeń zawierała standardowy tekst, jednak zdarzały się również takie, które zawierały osobiste listy i prywatne zdjęcia nadawców. Co prawda wiadomości nie były opisane danymi nadawców i odbiorców, jednak każdej towarzyszyło zdjęcie profilowe nadawcy.
Co można było jeszcze popsuć? Okazuje się, że oprócz czytania cudzych wiadomości można je było także kasować. Odkrywca błędu, będąc uczciwym i życzliwym obywatelem, zamiast skasować wszystkie cudze życzenia noworoczne zgłosił błąd Facebookowi. Facebook serwis chwilowo wyłączył, szybko naprawił i po kilku godzinach umieścił ponownie w sieci.
Pozostaje pytanie, jak ta usługa przeszła wewnętrzne testy bezpieczeństwa? Skoro tak trywialne błędy programistyczne nie zostają wyłowione, to jakie inne wpadki czyhają jeszcze w kodzie? Pewnie prędzej czy później będziemy mieli okazję o nich napisać. Wesołego i ciekawego Nowego Roku!
Komentarze
Jak przesżło testy? Pewnie jakiś Junior Brand Manager wpadł na pomysł realizacji tego w piątek po południu, ustawił atrybut ASAP=1, Junior PHP Programmer zakodował od ręki (bo to przecież takie proste) a że FB ma „continuous deployment” i „limited QA” to wszystko poszło od ręki na produkcję i tyle :)
http://cacm.acm.org/blogs/blog-cacm/51564-extreme-agility-at-facebook/fulltext :
„Facebook developers are encouraged to push code often and quickly. Pushes are never delayed and applied directly to parts of the infrastructure. The idea is to quickly find issues and their impacts on the rest of system and surely fixing any bugs that would result from these frequent small changes.”
Kiedyś brałem zostałem zaproszony rekrutacji na programistę do FB. Rozmawiałem wtedy z kilkoma różnymi senior developerami z różnych zespołów, lecz za każdym razem odnosiłem wrażenie, że od brudnej roboty są tam tylko stażyści (zwykły developer zleca im zadania i ew. weryfikuje wyniki).
Obym się mylił, ale nic na to nie wskazuje (co więcej jeden z tych devów sam „w żartach” napomknął o tym podczas mojego interview).
Wszystko, co wrzucamy do sieci jest publiczne. Bez żadnych wyjątków. Tego się trzymam i jeszcze nigdy nie zostałem niemile zaskoczony.
Trudniej już się źle zaskoczyć tak twierdząc… ;)