CodeIgniter podnosimy poziom bezpieczeństwa

2009-09-02 przez Tomasz Nowakowski | Kategoria: Programowanie

CodeIgniter to framework pisany z myślą o bezpieczeństwie aplikacji w PHP. Bardzo często programista pochłonięty swoim projektem lub pod presją czasu (czas nie jest sprzymierzeńcem programistów) popełnia kardynalne błędy w kodzie pozostawiając luki, które może wykorzystać potencjalny włamywacz. Kompromitacja mało popularnego blogu czy strony prywatnej nie jest może katastrofą, ale bardzo często błędy znajdują się na stronach urzędów czy korporacji. Trafiają się także źle wykonane aplikacje webowe (sklepy, systemy CRM/ERP/CMS itp.). CodeIgniter pisany jest z nastawieniem na bezpieczeństwo i już na poziomie samego framework’a podjęto wiele działań skutecznie eliminujących większość stosowanych ataków. Mimo tego, warto podczas tworzenia każdego projektu w CI podjąć kilka kroków, które jeszcze bardziej podniosą poziom bezpieczeństwa naszej aplikacji.

W domyślnej konfiguracji zaproponowana przez CodeIgniter struktura katalogów wygląda mniej więcej tak:

katalog_domowy
   web
      system
         application
         controllers
         models
         views
      index.php

Powyższa struktura jest mało wygodna jeśli nasz projekt ewoluuje i dodatkowo chcemy w łatwy sposób oddzielić aplikację od framework’a. Umieszczenie aplikacji w gałęzi framework’a zmusza nas podczas aktualizacji CI do pilnowania, żeby nie nadpisać plików aplikacji. Lepszym rozwiązaniem będzie oddzielenie aplikacji od framework’a i dodatkowo zmiana domyślnych nazw tych katalogów. Będzie to utrudnienie dla włamywacza, który może chcieć wykorzystać luki w samym CI (nie ukrywajmy, że błędy w kodzie są zawsze, tylko o niektórych z nich dowiadujemy się za późno). Rozwiązanie to umożliwia także, tworzenie katalogów z wersjami aplikacji i framework’a, w razie potrzeby w łatwy sposób możemy testować aplikację. Nowa struktura może wyglądać tak:

katalog_domowy
   web
      index.php
      app_01
         controllers
         models
         views
      app_02
         controllers
         models
         views
      ci_171
      ci_152

Idąc jeszcze dalej możemy pokusić się o przesunięcie kodu aplikacji i framework’a poza DocumentRoot naszego serwera. W ten sposób całkowicie odcinamy możliwość wykorzystania kodu w nieautoryzowany sposób. Wystarczy w pliku index.php odpowiednio ustawić ścieżki:

  1. $system_folder = "../ci_171";
  2. $application_folder = "../app_01";

Struktura katalogów teraz będzie wyglądała następująco:

katalog_domowy
   web
      index.php
   app_01
      controllers
      models
      views
   app_02
      controllers
      models
      views
   ci_171
   ci_152

Powyższy zabieg znacząco poprawi bezpieczeństwo całego projektu i dodatkowo ułatwi testowanie aplikacji w różnych środowiskach.


 

Menu

Kategorie

Czy wiesz że

kodowanie znaków na stronie wielojęzykowej najlepiej ustawić na UTF-8, unikniemy później problemów z wyświetlaniem.

Tagi na tej stronie

aplikacji bezpieczeństwa bezpieczeństwie codeigniter czas czasu często framework myślą php pisany pochłonięty podnosimy poziom presją programista programistów projektem sprzymierzeńcem swoim

Kanały RSS

Time: 0.8357 | Mem: 2.63MB