Rejestracja
•
Szukaj
•
FAQ
•
Użytkownicy
•
Grupy
•
Galerie
•
Zaloguj
Forum Y-G '04 Strona Główna
»
PHP
Napisz odpowiedź
Użytkownik
Temat
Treść wiadomości
Emotikony
Więcej Ikon
Kolor:
Domyślny
Ciemnoczerwony
Czerwony
Pomarańćzowy
Brązowy
Żółty
Zielony
Oliwkowy
Błękitny
Niebieski
Ciemnoniebieski
Purpurowy
Fioletowy
Biały
Czarny
Rozmiar:
Minimalny
Mały
Normalny
Duży
Ogromny
Zamknij Tagi
Add image to post
Opcje
HTML:
TAK
BBCode
:
TAK
Uśmieszki:
TAK
Wyłącz HTML w tym poście
Wyłącz BBCode w tym poście
Wyłącz Uśmieszki w tym poście
Kod potwierdzający: *
Wszystkie czasy w strefie GMT
Skocz do:
Wybierz forum
Darmowe Konto rapidshare Premium na własność!!
----------------
Legalny i Pewny Sposób na w?asne Konto Rapidshare NAWET NA ROK!
Download z Rapidshare
----------------
Seriale i filmy
Wszystko Bez Limitu ‹ Filmy ‹ Lektor PL/Dubbling
Wszystko Bez Limitu ‹ Filmy ‹ Polskie
Wszystko Bez Limitu ‹ Filmy ‹ Bajki/Filmy Animowane
Wszystko Bez Limitu ‹ Gry
Wszystko Bez Limitu ‹ Programy
Wszystko Bez Limitu ‹ Gry - R.I.P
Wszystko Bez Limitu ‹ Filmy ‹ Film/Napisy PL
Download z Torrentow
----------------
Torrent
Hard Truck
----------------
Dodatki do 18 Wos Haulin DOWNLOAD
Wprowadzenie
----------------
Wprowadzenie do hackingu - faq by Anubis
PHP
Komputery
----------------
Hacking
Bezpieczenstwo
Programowanie
Tworzenie przy komputerze
Metody
Keyloggery
Narzedzia
Metody ataków na strony internetowe - seria
Rodzaje wirusów.
RapidShare, czyli ściąganie za free przez radiówke
Offtopic
----------------
Humor
Czyli o wszystkim
Systemy Operacyjne
----------------
Windows
LinuxBSDUnix
Windows Expert
Filmy
----------------
Prison Break Sezon 3
Jestem Legendą
Prison Break Sezon 4
Sport
----------------
WIELKA TRIADA
Przegląd tematu
Przegląd tematu
Autor
Wiadomość
Anubis
Wysłany: Pon 19:28, 28 Sty 2008
Temat postu: Czy sesje są bezpieczne?
Chciałbym tu poruszyć temat bezpiecznego logowania do sajtu opartego na PHP. Okazuje się, że to nie takie proste jak by się mogło zdawać. No ale zacznijmy od początku:
Po pierwsze musimy zdawać sobie sprawę z tego, że login i hasło
1. zna użytkownik - można się włamać "na Mittnicka"
2. "zna" komputer użytkownika (możliwość keyloggerów, ostatnio pojawiły się też exploity na przegladarki umożliwiające fałszowanie zawartości paska adresu - klient mysli, że wszedł na właściwą stronę a jest na stronie spreparowanej)
3. każde urządzenie pośrednie pomiędzy komputerem usera a serwerem (atak man-in-the-middle, wszelkie podsłuchy)
4. hasło przechodzi przez skrypty PHP - można podstawić własny skrypt
5. hasło jest zapisane gdzieś na serwerze - można podejrzeć
6. webmaster i twórca sajtu na pewno mają jakieś backdoory pozwalające na zmianę hasła jeśli user go zapomni.
Standardowo logowanie wygląda tak:
user wypełnia formularz z loginem i hasłem, jest on wysyłany metodą POST do serwera, tam jest weryfikowana poprawność i otwierana sesja.
Każde odwołanie się usera do serwisu powoduje najpierw sprawdzenie ważności sesji i jeśli jest ok -> wyświetlenia strony serwisu.
Po zakończeniu pracy z serwisem user powinien się wylogować i sesja powinna zostać zniszczona.
W jaki sposób należy się bronić przed wykradzeniem hasła?
1. Uświadamiać swoich userów, że np. zapisywania hasła na kartce jest głupotą, podawanie go nie/znajomym także nie jest zbytnio szczęśliwym pomysłem.
2. Uświadamiać swoich userów aby nie ciągneli z netu śmieci i surowo karać "po premii" za takie wykroczenia. Bardzo często synek pracownika potrafi wiele zrobić z siecią firmową...
3. posiadać wystarczająco bezpieczną sieć, wykrywanie intruzów (IDS) i wszelkich podsłuchów, stosować szyfrowane połączenie klient-serwer (HTTPS)
4. Dbać o bezpieczeństwo własnego serwera, uniemożliwić podglądanie plików z hasłami innym userom. Rozdzielić katalogi tymczasowe z sesjami różnych sajtów.
5. Hasła należy szyfrować algorytmem haszującym, czyli takim, który nie pozwala odszyfrować hasła. Bardzo dobrym przykładem jest md5(). Ale co ciekawe znajomość loginu/hasła wcale nie jest potrzebna do tego aby przejąć uprawnienia zalogowanego usera!
Jak wspomniałem wcześniej po sprawdzeniu na serwerze ważności loginu i hasła tworzona jest sesja. Czyli w PHP tworzone jest ciastko PHPSESSID=jakiś numer. Jeżeli będziemy znali ten numer to bez trudu skorzystamy z tego, że ktoś inny akurat się zalogował.
Aby przejąć ten numer wystarczy wstawić kawałek javascriptu wywołujący nasz_skrypt.php?PHPSESSID=odczytany numer z ciastka. Np. w księdze gości, na forum - wszędzie tam gdzie można wstawić jakiś tekst - wyświetlenie odpowiednio spreparowanego tekstu spowoduje uruchomienie javascriptu i tym samym przejęcie uprawnień przez włamywacza. Rozwiązaniem jest tutaj striptags() i wycinanie przynajmniej javascriptu z tekstu. Dodatkowo należy zapisywać w sesji numer IP z którego nastąpiło logowanie i porównywać z numerem IP odwiedzającego stronę przy każdym następnym wejściu.
6. Wszelkie backdoory, a jest nimi na przykład możliwość edycji haseł w bazie danych (phpMyAdmin) powinny być bardzo dobrze zabezpieczone.
Oczywiście to, że user po zakończeniu pracy powinien się poprawnie wylogować jest utopią. Nawet ja, muszę się przyznać, to olewam i po prostu zamykam przeglądarkę. Dlatego należy stosować dodatkowe sprawdzenie przy logowaniu - czy user poprzednio się poprawnie wylogował i czy przypadkiem na ten sam login i hasło ktoś inny już nie jest zalogowany - jeżeli user zamknie nieprawidłowo sesję to niech teraz grzecznie poczeka aż ona wygaśnie i dopiero wtedy będzie mógł się zalogować ponownie. Oczywiście należy wziąć poprawkę na userów, którym Bill zawiesza kompa a TePsa zamyka połączenie z internetem.
Dodatkowe wodotryski, które podnoszą nieco bezpieczeństwo to:
* ograniczenie ilości nieudanych logowań z danego IP na jednostkę czasu
* blokowanie loginu po N nieudanych próbach logowania
* wymuszanie zmiany hasła po N dniach
* historia haseł uniemożliwiająca stosowanie wymiennie tylko 4 haseł (wiosna,lato,jesień,zima)
* sprawdzanie jakości hasła, jego długości, wymuszanie znaków specjalnych i liczb, sprawdzanie czy pasuje do "słownika" haseł. (John The Ripper)
* blokowanie loginu pracownika, który odchodzi z pracy lub idzie na urlop
* blokowanie możliwości logowania poza godzinami pracy i spoza sieci wewnętrznej firmy.
* przypisanie numeru/ów IP do loginu.
fora.pl
- załóż własne forum dyskusyjne za darmo
Powered by
phpBB
© 2001, 2005 phpBB Group
Design by
Freestyle XL
/
Music Lyrics
.
Regulamin