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:
- Zasada dodatkowych zabezpieczeń. Popularnie stosowana np. w serwisach aukcyjnych – przed zmianą kluczowych ustawień konta (np. hasła), użytkownik musi się przelogować.
- 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.
- 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.
- 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?