Masz przekichane, gdy nazywasz się jak słowo kluczowe. Pani True nie ma przez to dostępu do chmury Apple'a
Jednym z podstawowych problemów w programowaniu jest konwersja typów. Jest to proces zamiany wartości jednego typu (np. łańcucha znaków) na inny (np. wartość liczbową).
O ile czasami jest to proste, bo na przykład łatwo zamienić liczbę całkowitą 11 na łańcuch znakowy „11”, to w przypadku choćby liczb zmiennoprzecinkowych pojawiają się schody. Niektóre kraje używają przecinka, niektóre kropki, inne oddzielają zaś tysiące odstępami. Podobnie jest z konwersją dat i godzin - musimy wiedzieć dokładnie, co konwertujemy. Każda złożona forma danych jest wielokrotnie rzutowana w aplikacji - tak nazywamy konwersję między typami. Stosować możemy rzutowanie jawne, kiedy wskazujemy kompilatorowi bądź interpreterowi na jaki typ rzutujemy bądź niejawne, gdy zostawiamy to jego domyślności.
Popularność aplikacji internetowych oraz języka JavaScript spowodowała, że wielokrotnie zachodzi potrzeba zapisania danych w formacie tekstowym, po to, aby przesłać je przez sieć. Proces ten, zwany serializacją, jest podstawą komunikacji sieciowych aplikacji zarówno webowych, jak i mobilnych. Wiele z nich, o ile nie większość, pisze się w JavaScripcie, który to język domyślnie jest atypowy - wszystkie konwersje dokonywane są automatycznie. Potrzeba znajomości typu danych jest na tyle kluczowa, że powstał nawet specjalny dialekt JavaScript - TypeScript, który wymusza na programiście jawną deklarację typów zmiennych.
Dlaczego o tym piszę?
Jedna z użytkowniczek usługi iCloud Apple'a ma spory problem
Nie ma mianowicie dostępu do usługi synchronizacji danych ze względu na swoje nazwisko, które - jak chciał przypadek, jest słowem kluczowym w JavaScript.
Jej nazwisko to Rachel True - a pech chciał, że wypełniając formularz przy tworzeniu konta, napisała swoje nazwisko z małej litery. Stało się ono ciągiem znaków true
, będącym słowem kluczowym oznaczającym jedną z wartości typu logicznego boolean
.
Jak twierdzi Rachel, próbuje ona zainteresować problemem Apple od pół roku - jak dotąd bezskutecznie.
Błąd wskazywany przez iCloud oznacza: nie można przypisać wartości 'true' do pola 'lastName'. Wskazuje to nie tylko na niedbałe programowanie (brak odpowiedniego typowania pól), co na możliwe naruszenie bezpieczeństwa - bo jak widać wartości są interpretowane, co może prowadzić atakującego do możliwości wklejenia tam fragmentu kodu.
Osobiście ciekaw byłbym co stanie się po wpisaniu innych wartości w pole Nazwisko - być może ludzie o nazwisku Null, również nie mogą być klientami Apple?
Podobał ci się tekst? Udostępnij go lub polub na Facebooku.