PREtector, czyli zabezpieczenie przez wszelkimi atakami na strony www
Nawiązując do jednego z wątków apropo zabezpieczeń przed włamaniami na strony www, prezentuje skrypt (dalej zwany "Pretector") pozwalający zabezpieczyć stronę, przed wszelkiego rodzaju injectami, czyli 100% tego co robią exploity na luki w aplikacjach webowych.
Troche technicznego szumu:
Skrypt swoje działanie opiera na php.ini dyrektywa file_prepend, ta opcja pozwala na uruchomienie dowolnego kodu php w każdym skrypcie php na serwerze, łatwo się domyśleć, że w tym przypadku dowolnym kodem będzie "Pretector". Skryp dokonuje walidacji danych wejściowych, czyli tablic superglobalnych: $_GET, $_POST, $_COOKIE, $_FILE, $_SESSION, $_SERVER, $_REQUEST. Aby wdrożenie tego zabezpieczenia zakończyło się pełnym sukcesem, warto przez pewien okres czasu przełączyć skrypt w tryb testowy, przez ten czas będzie on jedynie zapisywał w bazie danych jakie zmiany chciał wprowadzić do zmiennych, po okresie próbnym przeglądamy zawartość i decydujemy czy działanie "Pretectora" może w negatywny sposób wpłynąć na pracę strony, konkretnie chodzi o usuwanie ze zmiennych znaków, które wcale nie były próbą ataku.
Skrypt celowo napisany proceduralnie aby zaoszczędzić nieco wydajności.
Czekam na komentarze
/edit
Klucze:
Trzeba się zastanowić nad walidacją kluczy, jednakże:
1. Każda ingerencja w nazwe klucza prawie na pewno spowoduje błędne działanie aplikacji.
2. Nie spotkałem się jeszcze z bugiem którego możnaby wyeksploitować przez inject w kluczu...
Dane binarne:
Walidacje danych binarnych przy tym skomplikowaniu skryptu możnaby sobie darmować, dokonałem jednak przykrego odkrycia,
funkcja is_binary() dostępna jest dopiero od PHP v6.0 :/ Także w tej chwili nie widze prostej metody na rozpoznanie czy do funkcji walidującej zostały przekazane dane binarne.
Ostatnio edytowane przez lame : 12-01-2009 - 11:21