Jak tworzyć bezpieczne oprogramowanie na urządzeniach mobilnych i stacjonarnych?
Opublikowany: 2019-03-06We współczesnym świecie kwestie bezpieczeństwa przyciągają więcej uwagi niż kiedykolwiek. Różni hakerzy i oszuści zaczęli się rozwijać wraz z pojawieniem się kryptowalut, które warte są setki i tysiące dolarów za monetę. Wrażliwe dane celebrytów, dane uwierzytelniające bankowość, informacje o przelewach pieniężnych lub nowych technologiach – łotrzykowie online czerpią korzyści ze wszystkiego, ponieważ ludzie zwykle ignorują kluczowe środki ochrony.
Jednak ryba śmierdzi od głowy w dół. Bez odpowiednich zabezpieczeń zaprojektowanych przez twórców oprogramowania nie da się chronić danych po stronie klienta. Biorąc pod uwagę fakt, że urządzenia mobilne zyskują coraz większą popularność ze względu na stale zwiększające się funkcjonalności, podczas gdy platformy desktopowe/webowe pozostają najwyżej oceniane, chcemy odkryć, w jaki sposób twórcy mogą sprawić, by ich produkty były kompatybilne i bezpieczne. W ostatniej sekcji znajdziesz wskazówki dla użytkowników.
Bezpieczeństwo w pigułce
Najpierw rozróżnijmy zabezpieczenia aplikacji i oprogramowanie zabezpieczające. Terminy te mogą wyglądać na synonimy, ale odnoszą się do różnych aspektów, gdzie pierwsza definicja oznacza ogólne bezpieczeństwo wydanego produktu, a druga obejmuje zarówno etap po wdrożeniu, jak i przed wdrożeniem.
Zasadniczo aplikacje są prostymi narzędziami, które pomagają użytkownikom w interakcji z danymi za pośrednictwem gadżetów mobilnych lub platform stacjonarnych. Powiedzmy, że jeśli chcesz sprawdzić kartę zdrowia lub uzyskać informacje o ostatnich transakcjach, znacznie wygodniej jest skorzystać ze smartfona lub witryny szpitala/banku zamiast dzwonić lub odwiedzać te miejsca.
Problem polega na tym, że oprogramowanie nie rozpoznaje typów danych sklasyfikowanych według jego wrażliwości. Bez ręcznie zaprogramowanych kategorii i dostępów aplikacje nie będą w stanie odróżnić Twojego imienia i nazwiska od numerów CVV/CVC Twojej karty kredytowej. Dlatego tak ważne jest, aby budować odpowiedni system bezpieczeństwa już od pierwszych etapów rozwoju. Oto kilka wskazówek dotyczących tego procesu:
- Przeprowadź bezpieczne kodowanie.
- Klasyfikuj dane i ustalaj wymagania dotyczące autoryzacji.
- Zlokalizuj błędy i pozbądź się ich.
- Oceniaj bezpieczeństwo na każdym etapie rozwoju.
- Sprawdź wiarygodność materiałów innych firm.
- Edukuj programistów na temat technik oszustw.
- Wymagaj 2FA od pracowników.
- Regularnie aktualizuj oprogramowanie po jego wydaniu.
Znane problemy z bezpieczeństwem
Trudno jest stworzyć solidnie chronioną aplikację bez zrozumienia, jak platformy mobilne i stacjonarne są podatne na ataki hakerów. Mówiąc prościej, jest kilka tradycyjnych podejść do włamywania się do urządzeń o innej architekturze, dlatego proponujemy sprawdzić je już teraz. Te punkty powinny pomóc na etapie projektowania, kiedy planujesz najlepsze środki bezpieczeństwa zarówno dla produktów mobilnych, jak i stacjonarnych.
Smartfony i tablety
Styl życia poza domem to obowiązkowe urządzenia mobilne. W ten sposób wiele osób przenosi teraz swoje podstawowe dane z komputerów na smartfony lub przynajmniej synchronizuje informacje między dwiema platformami. W rezultacie otrzymujemy kolejny punkt, w którym oszuści mogą uzyskać dostęp do cennych danych. Technicznie rzecz biorąc, istnieją trzy wrażliwe aspekty:
- Sprzęt urządzenia.
- Samo oprogramowanie.
- Sieci publiczne.
Na przykład złodzieje mogą łatwo ukraść Twój telefon w tłumie, zrootować go i uzyskać dostęp do wszystkiego, co znajduje się w systemie. Sprzęt można również sfałszować, kupując gadżety od nieoficjalnych dystrybutorów. Poza tym słabym punktem hakerzy są znani z włamywania się do smartfonów i tabletów za pośrednictwem niezabezpieczonych publicznych sieci Wi-Fi. Wreszcie, nie ma sensu instalować złośliwego oprogramowania za pośrednictwem zwykłej gry lub aplikacji multimedialnej, jeśli zostało pobrane z nieoficjalnego sklepu.
Sieć i komputery stacjonarne
Obie przeglądarki i pobrane oprogramowanie zwykle działają podobnie, jeśli wymagają połączenia z Internetem. Tutaj aplikacja działa jako strona klienta, która wysyła żądania i uzyskuje wyniki, podczas gdy główna baza danych (i interfejsy, jeśli używasz przeglądarki do poruszania się po stronach internetowych) znajduje się na podłączonym serwerze. Stąd wyzwania bezpieczeństwa dzielą się na trzy części:
- Strona klienta.
- Po stronie serwera.
- Proces wymiany danych.
Najniebezpieczniejszy problem jest związany ze starszym oprogramowaniem, ponieważ łotrzykowie online mogą łatwo włamać się do starych interfejsów, które nie są już chronione przez zaktualizowane systemy. Ponadto buforowanie stron, złe usługi szyfrowania oraz adresy/wrażliwe informacje ujawniane przez pliki cookie to potencjalne słabe linki, które mogą zostać wykorzystane przez hakerów.

Tworzenie bezpiecznego oprogramowania
Teraz pytanie brzmi: jak stworzyć niezawodny system dla obu platform, skoro mają tak różne słabości? Generalnie istnieją trzy podejścia. Możesz wybrać najbardziej odpowiedni, ale pamiętaj o rozważeniu zalet i wad każdego przykładu.
Mobilny i stacjonarny
W takim przypadku programiści powinni stworzyć dwa produkty (dla platform mobilnych i dla przeglądarek/komputerów) oddzielnie od siebie. Aplikacje nie są ze sobą połączone ani zsynchronizowane, więc przygotuj się na wysokie wydatki zarówno pod względem pieniędzy, jak i czasu, ponieważ Twój zespół będzie musiał zainwestować dwa razy więcej zasobów. W rezultacie zostaną wydane dwie oddzielne aplikacje, każda z własną ochroną zaprojektowaną specjalnie dla platform docelowych.
Mobilny Z komputerem stacjonarnym
Opcja ta zakłada uruchomienie wysoce adaptacyjnego serwisu, dzięki czemu wszystkie elementy będą wyświetlane poprawnie dla użytkowników webowych i mobilnych. W rezultacie otrzymujesz pojedynczą platformę z tylko jednym słabym punktem opartym na opisanych powyżej lukach w zabezpieczeniach sieci. Niemniej jednak produkt końcowy będzie mniej funkcjonalny niż natywne platformy mobilne, zawartość będzie ładować się wolniej, a ogólne funkcje będą ograniczone.
Mobilny PLUS stacjonarny
Zamiast tworzyć osobne projekty lub projektować stronę internetową zgodną z urządzeniami mobilnymi, istnieje najbardziej wydajna i bezpieczna opcja. Różne zespoły, w tym deweloperzy Diceus.com, stosują to podejście. Wymagane jest utworzenie jednej platformy zaplecza, ale zainstalowanie na niej dwóch różnych systemów frontonu.
Na przykład podstawowe oprogramowanie można zrealizować za pomocą RESTful API, które obsługuje skalowalną architekturę zarówno dla telefonów komórkowych, jak i komputerów stacjonarnych. Co więcej, React.js jest dobrym wyborem dla frontonu internetowego, podczas gdy frameworki Xamarin lub Cordova będą odpowiadać potrzebom mobilnych deweloperów wieloplatformowych.
Przechodząc do środków bezpieczeństwa, istnieje kilka sprawdzonych metod podejścia mobilnego na komputer stacjonarny:
- Zapewnij szyfrowanie na najwyższym poziomie. W przypadku wersji internetowych konieczne jest posiadanie rzeczywistej technologii szyfrowania, która zapobiega włamaniom.
- Uwzględnij wykrycia. Złośliwe oprogramowanie będzie można wykryć w dowolnym momencie, jeśli systemy front-end będą miały silne połączenie z platformą back-end.
- Uwzględnij samoobronę. Aplikacje mogą wykorzystywać funkcje środowiska wykonawczego, takie jak porzucanie nieaktywnych sesji lub powiadomienia o awariach.
- Regularnie testuj oprogramowanie. Używaj SAST do testowania kodu, DAST do aplikacji i infrastruktury oraz IAST do sprawdzania danych.
- Aktualizuj i wspieraj produkty. W miarę jak łotrzykowie wymyślają nowe ataki, lepiej szybko reagować za pomocą nowych środków obronnych.
Opisany model rozwoju jest najbardziej zrównoważony pod względem zasobów, funkcji i bezpieczeństwa. Musisz stworzyć i zabezpieczyć trzy punkty (jeden back-end i dwa front-endy) zamiast czterech elementów osobnych produktów, ale otrzymujesz prawie taką samą funkcjonalność.
Ochrona zorientowana na użytkownika
Pod koniec dnia nie zapomnij o bezpieczeństwie po stronie klienta. Deweloperzy mogą stworzyć najlepszy możliwy system, ale zaniedbania użytkowników rujnują wszystko. Używając konkretnego oprogramowania, niezależnie od jego rodzaju, pamiętaj o higienie w Internecie: nie ufaj podejrzanym e-mailom, dokładnie sprawdzaj certyfikaty szyfrowania stron internetowych, używaj antywirusów itp. Zawsze włączaj 2FA, aby uzyskać dodatkowe kody weryfikacyjne przez SMS lub aplikacje uwierzytelniające. Korzystaj z narzędzi identyfikacji biometrycznej, takich jak odciski palców lub wykrywanie twarzy na smartfonach i tabletach.
Ogólnie rzecz biorąc, ochrona danych nie jest trudna, gdy zarówno programiści, jak i użytkownicy wiedzą, jak to zrobić. Hakerzy straciliby pracę, gdybyśmy wszyscy ściśle przestrzegali zasad bezpieczeństwa.
Masz jakieś przemyślenia na ten temat? Daj nam znać poniżej w komentarzach lub przenieś dyskusję na naszego Twittera lub Facebooka.
Rekomendacje redaktorów:
- Wywiad ze Stu Grubbsem, dyrektorem generalnym firmy Lightstream zajmującej się oprogramowaniem do strumieniowania
- 10 programistów, których powinieneś śledzić w 2019 roku
- 5 najpopularniejszych dostawców oprogramowania do gier
- Oto najwięksi i odnoszący największe sukcesy dostawcy oprogramowania iGaming
- Czy Twoje oprogramowanie antywirusowe może spowolnić szybkość Internetu?