Każda przeglądarka ma wbudowany mechanizm wspierający XMLHTTPRequest (XHR). Istotą aplikacji typu Web 2.0 jest pobieranie danych z różnych trzecich serwerów w ten sposób doprowadzając do słynnego "mesh-up" czyli misz-masz. Stwarza to określone zagrożenie dla odbiorcy aplikacji. Na szczęście XHR technologia nie zezwala bezpośrednio na tego rodzaju sztuczki. "XHR has security protections built-in, preventing a user’s browser on Website A from making connections to Website B." Ale są różne obejścia tego ograniczenia. Rozwiązanie polega na stworzenie serwera pośrednika w domenie internetowej tzw. proxy (najczęściej na serwerze internetowym witryny). Odwołanie do witryny B ma przez serwer proxy taka postać http://websiteA/proxy?url=http://websitesB/ - w ten sposób proxy przekazuje żądanie z witryny A do witryny B. Wten sposób można ominąć ograniczenia XHR i apliakcja nie przesyła cookies. Ale w ten sposób witryna A gości odwołania do witryny B. Bezpieczeństwo polega na monitorowaniu do jakich to URL chcą się odwołać strony witryny B. A więc na kontroli i samocenzurze. Odnośnie Cross-Site-Scripting (XSS) to rzeczywiście AJAX na to zezwala, ale stosując wyłącznie JavaScript możemy "osiagnąć" taki sam efekt bez uciekania się do nadmiernej komplikacji w AJAX. Autor (Jeremiah Grossman) zademonstrował to w słynnej prezentacji “Hacking Intranet Websites from the Outside” at BlackHat 2006. Z kolei inna prezentacja pt. “Cross-Site Scripting Worms and Viruses" pokazuje jak możne to osiagnąć poprzez JS.
Zasady bezpiecznej aplikacji internetowej to KROK 1 polegający na:
- uwzględnienie aspektów bezpieczeństwa juz na etapie projektowania aplikacji
- dogłębne sprawdzania danych podanych przez użytkownika
- stosowanie tylko sprawdzonych bibliotek komponentów (dostępnych w branży), obojętne na jakiej licencji (closed lub open source), nie wymyslać na nowo koła (i powtarzać błędy innych) szczególnie przy kryptografii i zarządzaniu sesją.
- bezpieczna koniguracja (separacja usług, zasada najmniejszych przywilejów, wyłączenie usług zbędnych oraz komunikatów o błędach)
- Stałe poszukiwanie i naprawianie ewentualnych usterek. Stały pomiar i ocena podatności na atak (vulnerability assessment)
KROK 2 polega na nieustajacym monitorowaniu i walidacji rozwiązań.
Brak komentarzy:
Prześlij komentarz