Dewelopment bezpiecznych aplikacji mobilnych

30.05.2013 Marcin Sałaciński Tagi: , , , ,

Urządzenia mobilne to bardzo dobra grupa docelowa dla przygotowywania wszelkich możliwych aplikacji, czy to darmowych czy płatnych. Użytkownicy chętnie instalują nowe programy, szczególnie, jeżeli są darmowe, oferują wystarczające funkcje i spełniają oczekiwania. Nie zastanawiamy się wtedy, czy są one bezpieczne i czy zostały przygotowane z dbałością o nasze dane i przechowywane przez nas pliki, dokumenty i zdjęcia. Zakładamy, że skoro pojawiły się w Google Play czy AppStore, to zostały sprawdzone, są oparte o dobre i zaufane frameworki. Czym się zatem stresować?

Pamiętam jak kilka lat temu przygotowanie aplikacji mobilnej (gry) dla większości ówcześnie dostępnych urządzeń wiązało się z implementacją około dwustu wersji aplikacji, które były przeznaczone dla siedmiuset rozmaitych urządzeń. Były to różne systemy operacyjne, rozdzielczości ekranu, funkcje multimedialne, wielkości pamięci i języki programowania. Ogarnięcie takiej różnorodności wymagało skupienia na funkcjonalności, wyglądzie, bezbłędnym działaniu i spełnianiu oczekiwań dystrybutorów, którzy zamawiali daną grę czy aplikację. Projekty zwykle były krótkie i intensywne. Nie wiem czy ktokolwiek się mocno zastanawiał, jak napisać kod, żeby nie był niebezpieczny i nie było luk. Celem było przygotowanie produktu w terminie (bo np. była premiera filmu w kinach lub inna akcja marketingowa) i to jest normalne w projektach. Z drugiej strony koncentracja na dostarczeniu efektu może spowodować pominięcie pewnych ważnych kwestii jak eliminacja znanych podatności.

 

Dziś urządzenia są niesamowicie bardziej zaawansowane niż wtedy, a ciśnienie na dostarczanie produktów na pewno się nie zmniejszyło (bardziej myślę że nacisk systematycznie rośnie razem z konkurencją na rynku). Systemy operacyjne są dużo bardziej rozbudowane i elastyczne, umożliwiają instalowanie takiego spektrum oprogramowania, że ciężko przewidzieć, jakie mogą być skutki i co tak naprawdę jest wgrywane do urządzeń. Aplikacje w trakcie instalacji proszą o zgodę na udostępnienie książki adresowej, dostępu do internetu i innych możliwości, których z reguły nikt nie weryfikuje i instaluje machinalnie nowe wersje programów, wierząc że nie powinno się nic złego wydarzyć. Nawet jeśli programiści nie mają złej woli (a pojawia się przecież sporo aplikacji, których celem jest zaszkodzenie użytkownikowi) to jest bardzo prawdopodobne, że coś przeoczą i nie zweryfikują, a testerzy nie są w stanie wyłapać wszystkiego. Im bardziej złożone i rozbudowane systemy operacyjne, a same aplikacje bogate w funkcje, tym bardziej rośnie prawdopodobieństwo popełnienia błędu.

 

Można w tym momencie stwierdzić, że przecież są programy antywirusowe czy inne zabezpieczenia, które powinny przed takimi sytuacjami zabezpieczyć. Nie da się jednak uchronić przed wszelkimi zagrożeniami, także tymi jeszcze nieznanymi, a błędy aplikacji, której użytkownik tak naprawdę pozwolił wykonywać określone czynności, mogą przejść niezauważone. Tak szczerze – kto z Was rezygnuje z instalacji nowej wersji aplikacji, która wymaga szerszych uprawnień w Androidzie, albo z nowej aplikacji, która wymaga akceptacji dla dziesięciu poszczególnych wymagań? Z reguły górą jest przydatność aplikacji i zaufanie, że może nic się nie zdarzy. W przypadku programów iOS mamy większy wpływ – możemy aplikacji zabronić dostępu do np. usług lokalizacji, co w Androidzie jest akceptowane raz przy instalacji i zwykły użytkownik nie ma już później na to wpływu.

 

Wracając do pierwotnej myśli, co prawda teraz mamy kilka wiodących systemów i platform, ale samych rodzajów urządzeń jest bardzo dużo i pojawiają się kolejne. To może oznaczać większą liczbę kombinacji potencjalnych problemów i zagrożeń. Rzadko kto teraz myśli o tym, czy urządzenie i przygotowywane programy są bezpieczne – liczy się efekt, funkcjonalność, przebojowość, cena, przydatność i wiele innych czynników. Bezpieczeństwo jest gdzieś daleko. Coraz więcej jest aplikacji, które są zintegrowane z usługami w chmurze i synchronizują dane pomiędzy różnymi rodzajami urządzeń i systemów operacyjnych. Co prawda same usługi są dość bezpieczne, ale pozostaje kwestia komunikacji i jej zabezpieczenia.

 

Przeglądanie rozmaitych raportów może dać pojęcie o obecnej skali złożoności dewelopmentu mobilnego. Żeby dotrzeć do 80% rynku, wygląda nato, że trzeba przygotować aplikację dla co najmniej 150 różnych urządzeń. Czytałem raport, w którym wykazywano, że jedna z usług zarejestrowała dostęp z ponad 2000 różnych urządzeń. To jest bardzo duża liczba, oznaczająca potencjalnie tyle samo kombinacji sprzętu i oprogramowania, które mogą spowodować problemy i powinny być dokładnie sprawdzone. Nie wiem, czy firmy implementujące rozwiązania mobilne pamiętają o tym zagadnieniu – chętnie poszukam dalej i podzielę się z Wami :-)

 

avatar
IT Project Manager
Kierownik projektu, analityk i projektant z szeroką wiedzą techniczną i doświadczeniem w procesie tworzenia oprogramowania, zdobytymi w trakcie realizacji projektów, także dofinansowywanych z UE.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *