Bądź na bieżąco - RSS

Bezpieczne programowanie w PHP

Marzec 31st, 2010 przez VizjereiX | Brak Komentarzy | Kategoria: Bezpieczeństwo, Poprawność, Przedszkole

W ramach zajęć z przedmiotu „Bezpieczeństwo w Systemach Komputerowych” tworzymy pewne materiały, oczywiście dotyczące bezpieczeństwa. Postanowiliśmy podzielić się tym z szerszym gronem niż tylko z kolegami z roku.

Zaczniemy od kilku tricków dotyczących PHP. Pokażemy jak wykonać pewne ataki i, co ważniejsze, jak się przed tymi atakami bronić. Będzie też kilka zasad historycznych, żeby pokazać, że język ewoluuje i sam zapewnia coraz większą ochronę.

Na początek zasada numer jeden – jedna, niepowtarzalna. Banalnie prosta, ale ekstremalnie ważna: użytkownik jest zły. Jeśli tylko będzie miał możliwość coś popsuć, to na pewno popsuje. Jeśli chcesz, żeby w dane pole wpisał liczbę, na pewno wpisze znaki specjalne.
Tak, to już jest atak. Jeśli nie zadbaliśmy o filtrowanie danych, to nasz portal jest potencjalnym celem ataków, gdyż większość ataków korzysta właśnie z tej luki.

Sprawa numer dwa: rozszerzenia plików. Jeśli tworzysz plik z kodem PHP, zawsze zapisuj go z rozszerzeniem „.php”. Jeśli zapiszesz go z innym rozszerzeniem (popularne jest „.inc”), to użytkownik wyświetli go jak zwykły plik tekstowy. Odczyta Twoje hasła. Skompromituje serwer. I po zabawie.

Sprawa numer trzy: dyrektywa register_globals. Jeśli masz możliwość – wyłącz. I to czym prędzej. Ona po prostu jest niebezpieczna! wystarczy wprawny cracker i wszelkie algorytmy bezpieczeństwa zostają skompromitowane.

Numer cztery: ataki typu Injection. Wstrzyknięcie obcego kodu w nasz kod. Sprawa bardzo niebezpieczna. Zabezpieczenie – filtrowanie danych. Do ataków tego typu należą SQL Inecjtion, Code Injection oraz Shell Injection.

Numer pięć: XSS i CSRF – umieszczenie na naszej witrynie szkodliwej zawartości. Ataki często mylone z sobą, ale pozwalające na nieco inne wykorzystanie luk.

Numer sześć: Session Fixation. Nie masz uprawnień? Możesz je sobie ukraść. I to w dość prosty sposób, korzystając z luk w portalu i łatwowierności ludzi. Jeden z ataków, przed którym można się obronić niewielkim nakładem pracy, ale jego pominięcie podczas ustalania polityki bezpieczeństwa portalu może skończyć się tragicznie.

Wreszcie numer siedem: HTTP Response splitting. Atak o znaczeniu historycznym. Jego wykonanie uniemożliwia w tej chwili sam język. W starych wersjach potrafił napsuć sporo krwii.

Tyle tytułem wstępu. O każdym z ataków i sposobach obrony postaram się napisać więcej. Mam przygotowane już pewne przykłady ataków, muszę tylko przygotować poligon. Jeśli ktoś jest niecierpliwy, to może na temat ataków poczytać m.in. w czasopiśmie Hackin9. Dwa numery w wersji pdf są do pobrania z naszej strony.

Tagi: , , , , , , , , , , ,