Bezpieczne aplikacje webowe.
Od jakiegoś czasu bardzo intensywnie rozwija się rynek aplikacji webowych. Aplikacje webowe to takie, w których zachowana jest zasada minimalnego klienta, czyli całość logiki działania przeniesiona jest na stronę serwera. Minimalny klient, w tym przypadku przeglądarka internetowa, służy generalnie tylko do prezentacji informacji i wysyłaniu żądań do serwera. Wszystkie operacje wykonuje serwer i odsyła wyniki swoich działań do klienta. Taki model zapewnia przede wszystkim wielką mobilność (przy zapewnieniu ciągłego dostępu do serwera) oraz elastyczność aplikacji. Zmiany w oprogramowaniu wprowadzane są w jednym miejscu, często nie zachodzi potrzeba informowania o tym użytkowników aplikacji.
Model aplikacji webowej wymaga jednak nieco innego podejścia do zagadnień bezpieczeństwa. Bezpieczeństwo aplikacji webowej ogólnie można rozdzielić na:
- bezpieczeństwo serwera (aktualizacje, konfiguracja, archiwizacja)
- bezpieczeństwo kodu aplikacji (kontrola danych, prawa dostępu, szyfrowanie)
Bezpieczeństwo serwera. W przypadku, gdy nasza aplikacja znajduje się na serwerze dostawcy usług hostingowych, nie mamy zbyt wielkiego pola manewru. Musimy założyć, że firma, która się tym zajmuje zna się na rzeczy i dokłada wszelkich starań, by zapewnić maksymalne bezpieczeństwo. Jeśli jednak sami zarządzamy serwerem, to sprawa jest już bardziej złożona. Przede wszystkim należy unikać standardowych ustawień dostępnych w naszym systemie operacyjnym serwera. Większość udanych ataków polega na wykorzystaniu luk znanych dla konkretnych wersji i dystrybucji oprogramowania. Jeśli zmienimy np. położenie krytycznych plików systemowych, to taki atak może się nie udać. Drugim ważnym czynnikiem bezpieczeństwa systemu serwera jest zasada minimalnej ilości usług. Włączać należy tylko te usługi (procesy), które są nam niezbędne i z całą pewnością, których konfigurację samodzielnie, świadomie przeprowadziliśmy.
Bezpieczeństwo kodu. W tym przypadku można by napisać wielo tomową książkę. Programiści mimo to popełniają błędy, czasem bardzo banalne, czasem błędy są ciężkie do zlokalizowania ze względu na złożoność aplikacji. Na ogólne bezpieczeństwo kodu aplikacji wpływa zawsze najsłabiej napisana jej część. Jeśli zrobimy przykładowo bardzo skomplikowany system logowania użytkowników do naszej aplikacji, a hasła będą przechowywane w niezaszyfrowanej postaci po stronie klienta w ciasteczkach (ang. cookies), to nasza aplikacja nie może zostać uznana za bezpieczną. Drugim ważnym elementem jest ochrona aplikacji przed wszelkimi metodami ataku injekcyjnego (ang. injection). Rozróżniamy ataki typu SQL-injection oraz HTML-injection. W pierwszym przypadku w żądaniu od klienta przekazywana jest część kodu SQL, która w niezabezpieczonej aplikacji, wprowadzana jest bezpośrednio do zapytania SQL. Druga metoda, HTML-injection, polega na wprowadzeniu złośliwego kodu JavaScript lub spreparowanych wartości pól formularzy HTML.
Wymienione tutaj aspekty bezpieczeństwa popularnych ostatnio typów aplikacji, to zaledwie ułamek wiedzy, jaką powinien posiadać twórca bezpiecznych aplikacji webowych.
