Aplikacje internetowe

Bełdziowe spojrzenie na aplikacje internetowe

Podstawowe zasady bezpieczeństwa.

Poniżej kilka podstawowych zasad, które wszyscy znają, ale często się o nich zapomina :-)

  • Traktuj użytkownika jako wroga.
    • Nie ufaj danym przesyłanym do aplikacji, wszelkie przychodzące dane należy traktować jako niebezpieczne.
  • Sprawdzaj dane przychodzące.
    • Sprawdzaj czy przesyłane dane są odpowiedniego typu, czy maja odpowiednia długość i czy pasują do wzorca.
  • Nie korzystaj z tablic superglobalnych.
    • Wszelkie globalne zmienne przepisuj do zmiennych lokalnych oraz odpowiednio je filtruj uchroni Cię to przed przypadkowym odwołaniem się do nieprzefiltrowanych danych.
  • Nie polegaj na zabezpieczeniach wynikających z konfiguracji serwera.
    • Po przeniesieniu kodu na inna maszynę czy po aktualizacji serwera konfiguracja może ulec zmianie.
  • Wdrażaj zabezpieczenia adekwatne do chronionych zasobów.
    • Nie ma sensu wdrażać wielkich zabezpieczeń na stronie domowej, z drugiej strony proste logowanie nie jest wystarczające w serwisie korporacyjnym.
  • Wczuj się w rolę napastnika, postaraj się zlokalizować krytyczne miejsca w aplikacji.
  • Nadaj użytkownikowi najniższe przywileje jakie możesz.
    • Jeśli rola użytkownika sprowadza się do biernego przeglądania danych z bazy nie ma sensu by jego połączenie umożliwiało wykonanie zapytania DROP.
  • Nie przechowuj haseł w jawnej postaci.
    • W przypadku uzyskania dostępu do bazy danych napastnik nie ma kompletnych danych potrzebnych do logowania.
  • Loguj zdarzenia.
    • Logi dają wgląd w stan aplikacji, umożliwiając zlokalizowanie wszelkich anomalii.
  • Wyłącz pokazywanie błędów.
    • Zwykłemu użytkownikowi nie są potrzebne szczegółowe informacje na temat błędu, który wystąpił, wystarczy mu prosty komunikat. W przypadku napastnika dane te mogą być pomocne przy próbie ataku, np. komunikat o błędzie SQL.

Tagi:
Kategoria: Bezpieczeństwo, Bezpieczeństwo aplikacji internetowych


8 komentarzy

  1. mądry Polak po szkodzie?

  2. któryś zapewne ;-) tu generalnie wrzuciłem to z czego zawsze korzystam licząc na to, że z czasem lista się powiększy :)

  3. i doszło info o pokazywaniu błędów :)

  4. wiadomo;)

  5. OuTSideR napisał(a):

    Jak by bylo jeszcze rozwiazanie – jak robic, a jak nie. Bo to co napisales „zielonemu” nic nie da :)

  6. będzie :) to co się da rozwinąć to będzie rozwinięte :-)

  7. > Nie korzystaj z tablic superglobalnych.

    IMO powinno być: filtruj tablice superglobalne.
    Ja w konstruktorze zawsze filtruję dane do odpowiedniego formatu i ich używam. Nie widzę sensu przepisywania do własnych zmiennych bo jest to to samo co nadpisanie indeksów w tablicy superglobalnej.

  8. sek w tym, że jeśli korzystasz z tablic superglobalnych nie masz pewności, że gdzieś przez przypadek nie odwołasz się do zmiennej, która wcześniej nie została przefiltrowana. Przepisujac zmienne do zmiennych lokalnych jednocześnie je filtrując masz pewność, że operujesz na bezpiecznych danych.

Dodaj komentarz