cz
cz
Zpět

Bezpečnost mobilních aplikací

Mobil - 20th Duben 2016
Napsal/a Michal Vávra

V dnešním článku se zaměřujeme na bezpečnost mobilních aplikací a to především z pohledu komunikace se vzdáleným serverem. Pojďme si ukázat, co komunikace obnáší, jak se prokázat a jak nebýt ukraden.

Haló, tady jsem já

Pokud aplikace se vzdáleným serverem komunikuje čistě jen kvůli stažení veřejných dat (ta, co jsou pro všechny stejná/může je prohlížet kdokoliv), tak pak není co řešit. Nemusím se prokazovat, kdo jsem, nemusím si to hlídat a hlavně se nemusím bát, že mi data někdo ukradne. Komplikovanější to však nastává velmi záhy a to, když potřebujeme vědět, kdo data chce a jestli k nim má přístup. Stejně tak pokud používá určité funkce na serveru, které vyžadují oprávnění, například když chci z mobilu poslat na server příspěvek.

Základním a nejpoužívanějším způsobem autentizace je uživatelské jméno a heslo. A je jedno, jestli je to přezdívka, email nebo přidělený kód. Hlavní myšlenka je v tom, že tuto kombinací může znát jen příslušný uživatel, čímž prokáže totožnost.

 

bezpecnost-mobilnich-aplikaci-1

 

Slyším, co si povídáte!

Prvním předpokladem k zabezpečení aplikace je použití šifrovaného spojení, např. přes HTTPS. Pokud se to nepoužije, vše se posílá v nezašifrované textové podobě. A když pak nějaký zlý drban ukořistí paket obsahující právě jméno a heslo, což třeba na Wi-Fi není žádný problém, tak je problém.

Další užitečnou věcí je neposílat jméno a heslo pořád dokola. Je potřeba předpokládat, že stát se může cokoliv a čím víckrát jméno a heslo projde Internetem, tím spíš ho někdo „čmajzne“. To můžeme nahradit nějakým tokenem, který uživateli vrátíme na základě autentizace. Ten může mít také třeba nějakou expiraci, stejně tak není problém ho kdykoliv zrušit. Opět, i když máme token, stejně potřebujeme šifrovanou komunikaci, to je zkrátka základ. Jinak ani nemá cenu cokoliv zaheslovat.

Opakování je matka moudrosti

Když máme na serveru požadavek, tak musíme zjistit, komu patří. Tak vezmeme token nebo přihlašovací údaje a vydáme se je hledat do databáze. Ty po chvíli najdeme a pro daného uživatele jdeme hledat oprávnění. No a až ho najdeme, tak ověříme, že opravdu může udělat to, co chce, operaci provedeme a vše slastně zapomeneme. A za 5 vteřin si dáme celé kolečko znova, protože přišel další požadavek. A pak znova a znova. A vše stojí výpočetní čas.

 

bezpecnost-mobilnich-aplikaci-2

 

Je pravda, že u některých aplikací se tomuto nevyhneme, zkrátka vždy se musíme podívat, jestli daný uživatel může udělat to, co chce. Ale pak jsou případy, kdy to není tolik potřeba a jde to udělat elegantnějším způsobem. A to tím, že jak se uživatel autentizuje, vrátíme mu obsáhlejší informaci, kterou se autorizuje a ta obsahuje jeho identitu (např. uživatelské ID) a vše, co může dělat (třeba přidat článek do blogu). A už nemusím vše znova a znova hledat.

Ale jak zajistit, že nás nebude tahat za serverovou fusekli a nepošle nám zkrátka, co chce? Tak si to podepíšeme. Ideálně se nám na to hodí technologie JWT – JSON Web Token. Ve zkratce se jedná o informace (v podstatě libovolné, co potřebujeme), které dáme uživateli po ověření a kterými se v každém požadavku prokazuje. Výhoda tohoto tokenu je, že se přenáší zakódovaný, lze ho rozkódovat a přečíst a je podepsán vystavitelem, takže máme možnost, jak ověřit, že je pravý. A právě takovýto mechanizmus se nám hodí i do mobilních aplikací, kde obzvláště je většina přihlášeních trvalá a my nemusíme ukládat heslo pro ověření.

 

bezpecnost-mobilnich-aplikaci-3

 

Shrnutí

Takže pokud chceme mít bezpečnou aplikací, tak se bez šifrované komunikace (HTTPS) neobejdeme vůbec. O to více je udivující, kolik mobilních aplikací to nerespektuje. Dále potřebujeme autentizovat uživatele, ale zároveň co nejméně přenášet jeho heslo. Na to se nám skvěle hodí tokeny, ať už s potřebou pokaždé ho na straně serveru validovat a nebo JWT, kde jsou všechny informace bezpečně uloženy v tokenu samotném.

Zajímavé odkazy

https://jwt.io/
http://www.businessit.cz/cz/9-10-mobilnich-aplikaci-ma-bezpecnostni-slabiny.php

Profilový obrázek
Napsal/a
Michal Vávra
Podobné příspěvky
Prioritizace pro startupy krok za krokem: PriX metoda pro plánování releasů
Design | Mobil | Web - 3rd Duben 2020
Napsal/a Tým Pixelfield
Jak využít AR v marketingu: Kompletní průvodce rozšířenou realitou v kampaních
Design | Marketing | Mobil | Web - 27th Březen 2020
Napsal/a Tým Pixelfield