Kurs PHP  ||  Spis tematów  ||  Kontakt
Kurs PHP Online

Bezpieczeństwo napisanego kodu

Zanim przejdziemy do podsumowania rozdziału szóstego, chciałbym poruszyć pewną ważną kwestię, związaną z bezpieczeństwem. Pokażę Wam, w jaki sposób utrudnić złośliwym użytkownikom ingerowanie w Wasz kod. W podsumowaniu chciałbym napisać cały system logowania, który nie może obejść się bez filtrowania zagrożeń. Jeżeli prowadzimy pomniejsze forum czy niewielką stronkę, to taki dowcip zniweczy jedynie naszą ciężką pracę. W przypadku jednak, gdy posiadamy dużą bazę klientów, przechowujemy ich dane personalne, kontaktowe itp., skutki włamania mogą okazać się tragiczne.

Zasada ograniczonego zaufania

Powinna nam ona przyświecać podczas konstruowania każdego serwisu internetowego. Polega ona na tym, że użytkownikowi nie można ufać (czyt. "ma złe intencje"). Przejawia się ona np. tym, że liczba pól formularza powinna być ograniczona do mininum, by zmniejszyć liczbę potencjalnych luk w bezpieczeństwie.

Filtrowanie niebezpiecznych znaków

Język PHP posiada wbudowane funkcje, mogące odfiltrować potencjalne niebezpieczeństwo. Jedną z nich, bardzo często przeze mnie stosowaną, jest htmlspecialchars($string). Funkcja ta jest bardzo podobna do strip_tags($string). Poniżej przedstawię ich zastosowania:

<?php

// Tekst zawierający potencjalne niebezpieczeństwo
$string = '<a href="adres">Niebiezpieczny link</a> 
           do <b>strony konkurencji</b>.';
		   
// HTMLSPECIALCHARS
$string_h = htmlspecialchars($string);

// STRIP_TAGS
$string_t = strip_tags($string);

echo $string_h.'<br/>'.$string_t;

// wyświetli:
// <a href="adres">Niebiezpieczny link</a> 
//         do <b>strony konkurencji</b>.
// Niebiezpieczny link do strony konkurencji.
		 
?>

Zasada działania

Oba skrypty przeszukują ciąg znaków, podany jako argument, w celu znalezienia znaczników HTML i PHP. HTMLSPECIALCHARS zamienia znaki specialne (<,>,',",&) na ich "bezpieczne odpowiedniki". Dzięki temu, wyświetlają nieaktywny kod html w surowej postaci. Więcej szczegółów na stronie PHP.net, tutaj. STRIP_TAGS natomiast usuwa napotkane znaczniki, pozostawiając suchy tekst, nieobstawiony html-em. Po szczegóły odsyłam na PHP.net.

To tyle, jeśli chodzi o zabezpieczenia. W podsumowaniu zobaczysz, kiedy i gdzie należy ich użyć. Zapraszam!

Spis lekcji w rozdziale szóstym

Poprzednia lekcja: Wysyłanie obrazka na serwer Następna lekcja: Podsumowanie działu szóstego