- Wprowadzone dane z formularza oczyść ze szkodliwych kodów (stosuj strip_tags) przed stosowaniem w apliakcji.
- Używaj odpowiednika mysqli_real_escape_data()czyszczenia danych z formularza przed zapisem do bazy.
- Nie używaj ustawień globlnych, ktoś może je zmienić i sam nie bedziesz wiedział kto i kiedy, inicjuj zmienne.
- Stosuj niejawne ustawienia w konfiguracji
- Przechowuj sesje w bazie
- Stosowanie wyrażeń regularnych jest efektywne ale mało wydajne i obciąża procesor
- Do sprawdzenia jawnego typów danych otrzymanych z formularza stosuj całą gamę funkcji ctype_.
- O ile to możliwe stosuje metodę POST (szczególnie gdy przesyłasz hasła) - nie widać w adresie URL argumentów (wada: n ie można strony zapamietać w zakładkach ulubione).
- Stosowanie zachowania stanu między stronami -sesje, ciasteczka, pola ukryte (type='hidden'). Te ostatnie sa bardzo skuteczne i łatwe w obsłudze, ale nie są bezpieczne (ktoś może podglądnąć zawartość strony). Wygoda kosztem bezpieczeństwa.
- To samo się tyczy nadmiernego polegania na zapamietaniu stanu poprzez przekazyanie danych między stronami w URL np. ?type=3, bardzo łatwo moża wywyłać stronę z innymi wartościami (już poza logiką aplikacji).
- Stosowanie CAPTCHA (completely automated public Turing test to tell computers and humans apart - pakiet PEAR Text_Captcha) jako obrona przed bot'ami.
- Stosuj filtry PECL do kontroli typów i wartości danych. Są dwa typy tych filtrów:
- Dane z formularza - źródłem może być: INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, INPUT_ENV, INPUT_SESSION, and INPUT_REQUEST:
$id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT, array('options'=>array('min_range'=>1)));
if ($id) { ... - Dane programowe - do kontroli danych w zmienych aplikacji:
$id = filter_var(
- Sprawdzenie czy jest zmienna :
if (filter_has_var(INPUT_POST, 'submitted')) {
- Tak możemy sprawdzić, czy formularz był wysłany.
- Filtry są wbudowane w PHP 5.2, dla wersji niższych trzeba doinstalować bibliotekę.
- Do logowania zastosować pakiet PECL Auth - zapewnia on standardową autentykację (stwierdzenie kto się chce dostać do portalu), lub można wykorzystać platformę rozwojową ZEND Framework.
poniedziałek, lipca 23, 2007
Bezpieczeństwo aplikacji w PHP (na podstawie - http://www.peachpit.com/articles/article.asp?p=711187&seqNum=4)
Subskrybuj:
Komentarze do posta (Atom)
Brak komentarzy:
Prześlij komentarz