4 złote zasady bezpiecznej aplikacji

Nieważne, czy pisana aplikacja jest aplikacją mobilną, webową, desktopową czy mamy do czynienia z rozbudowanym systemem. Poniższe cztery zasady tworzenia bezpiecznych aplikacji są zawsze aktualne:

klodka

  1. Zasada dodatkowych zabezpieczeń. Popularnie stosowana np. w serwisach aukcyjnych – przed zmianą kluczowych ustawień konta (np. hasła), użytkownik musi się przelogować.
  2. Zasada minimalnych uprawnień. Oczywistość – po co redaktorowi tekstów uprawnienia do administracji użytkownikami, po co praktykantowi hasła do głównych serwerów. Oczywiście w przypadku nadawania uprawnień ludziom, nakłada to na administratora dodatkową pracę oraz konieczność stosowania jasnych uprawnień. Natomiast w aplikacjach/systemach często sprowadza się to do uniksowego nadania uprawnień typu rwx do folderów oraz do uniemożliwienia użytkownikowi dokonywania niebezpiecznych akcji.
  3. Zasada znanych rozwiązań. Komplikowanie systemu zabezpieczeń powoduje dyskomfort podczas korzystania z aplikacji. Powinna być ona jak najbardziej intuicyjna. Po stronie interfejsu stosujmy więc rozwiązania znane z innych serwisów (login+hasło, capcha, potwierdzanie rejestracji przez mail itp.). Pod maską można zawsze pokusić się o bardziej finezyjne zabezpieczenia.
  4. Zasada czytelnego, prostego kodu. O tym pisze się całe książki (np. Czysty kod, klasyka którą zawsze i wszędzie polecam). W prostym kodzie bez „magicznych rozwiązań” rodem z serii łamigłówek i szyfrów (pozdrawiam programistów pewnej firmy…) łatwiej się odnaleźć, programuje się szybciej i trudniej o popełnienie błędu. Prościej jest wywołać metodę dostarczoną przez język (framework/platformę/zewnętrzną bibliotekę) niż samemu popełnić głupi błąd np. w skomplikowanym wyrażeniu regularnym. Wierzy się, że w dojrzałych językach (/platformach/frameworkach/bibliotekach) większość błędów została już znaleziona i wyplewiona. Jeśli chcemy rozwiązań autorskich – czy mamy czas (i fundusze) na nawet wieloletnie testy?

Dodaj komentarz

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