Bezpieczeństwo
Ta strona opisuje "dobre praktyki" w zakresie bezpieczeństwa sieciowego, oraz szczegóły dotyczące wewnętrzych możliwości bezpieczeństwa w CodeIgniterze.
Bezpieczeństwo adresów URI
CodeIgniter jest dosyć restrykcyjny, jeśli chodzi o zakres znaków, jaki możesz stosować w ciągu URI - a to wszystko aby zminimalizować możliwość przekazania złośliwych danych do aplikacji. Ciąg URI może zawierać tylko:
- Alfa-numeryczny tekst
- Tylde: ~
- Kropkę: .
- Dwukropek: :
- Podkreślenie: _
- Myślnik: -
Register_globals
Podczas inicjalizacji systemu, wszystkie globalne zmienne są niszczone, za wyjątkiem tych znajdujących się w tablicy _GET, $_POST i $_COOKIE. Procedura niszczenia daje taki sam efekt jak ustawienie register_globals = off.
error_reporting
W środowiskach produkcyjnych, zazwyczaj pożądane jest, aby wyłączyć raportowanie w PHP, poprzez ustawienie wewnętrzenej flagi error_reporting na wartość 0. To wyłącza wyświetlanie natywnych błędów PHP, które potencjalnie mogą zawierać wrażliwe informacje.
Ustawienie stałej ENVIRONMENT w pliku index.php na wartość 'production' wyłączy te błędy. W trybie developerskim, rekomendowane jest aby używać wartości 'development'. więcej informacji na temat różnic pomiędzy tymi środowiskami możesz znaleźć na stronie obsługa wielu środowisk.
magic_quotes_runtime
Dyrektywa magic_quotes_runtime jest wyłaczona podczas inicjalizacji systemu, abyś nie musiał usuwać slashy kiedy pobierasz dane z bazy danych.
Najlepsze praktyki
Przed zaakceptowaniem jakichkolwiek danych do apliakcji, niezależnie czy są to dane typu POST z formularza, dane COOKIE, URI lub XML-RPC lub nawet dane z tablicy SERVER, zachęcamy najpierw do wykonania tych trzech kroków:
- Filtruj dane tak jakby były niebezpieczne.
- Sprawdź poprawnośc danych, aby upewnić się czy są odpowiedniego typu, długości, wielkości itp. (czasami ten krok zastąpić krok pierwszy)
- Escapuj dane przed wysłaniem ich do bazy danych.
CodeIgniter dostarcza następujące funkcje, aby ułatwic Ci ten proces:
Filtrowanie XSS
CodeIgniter dostarcza filtr Cross Site Scripting. Ten filtr szuka powszechnie stosowanych technik osadzania złośliwego kodu JavaScript w Twoich danych lub innego typu kodu, który może wykraść pliki cookies lub zrobić inne złośliwe rzeczy. Filtr XSS jest opisany tutaj.
Sprawdzanie poprawności danych
CodeIgniter ma klasę Form Validation, która pomaga w walidacji, filtrowaniu i przygotowywaniu Twoich danych.
Escapuj wszystkie dane przed wysłaniem ich do bazy danych
Nigdy nie dodawaj informacji do abzy danych bez wcześniejszego ich escapowania. Po więcej informacji zapoznaj się z rozdziałem, który mówi o zapytaniach.