Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sesje, jakie metedy najbezpieczniejsze
Avatarus
post
Post #1





Grupa: Zarejestrowani
Postów: 304
Pomógł: 0
Dołączył: 12.12.2006
Skąd: Pszów

Ostrzeżenie: (0%)
-----


Witam
Stworzyłem prymitywny system logowania opartego na razie tylko o sesje (bez tabel i cookies). Działa ona tak:
na początku każdego pliku który wyświetla stronę (np index.php, news.php, artykul.php) mam funkcje session_start()
Potem jest logowanie. Ściąga dane z formularza (login i hasło), potem jest zapytanie SQL, jeśli znajdzie takiego usera w bazie to ustawia zmienne sesyjne:

  1. <?php
  2. $_SESSION['user']=tu są dane z tabeli
  3. $_SESSION['pass']=tu są dane z tabeli (oczywiście hasło hashowane md5)
  4. $_SESSION['level']=tu są dane z tabeli odnośnie poziomu usera. Czy to user, mod czy admin
  5. ?>


Przy wylogowywaniu jest robione session_destroy()
Czy takie coś jest bezpieczne? Chyba nie. Można przecież jakoś ukraść sesje.
Jak byście wy napisali sprawniejszy (i co ważniejsze) BEZPIECZNIEJSZY system sesji.

Z góry dziękuje na pomoc, naprawdę mi zależy na tym
Pozdrawiam.

Ten post edytował Avatarus 5.02.2008, 12:33:16
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Avatarus
post
Post #2





Grupa: Zarejestrowani
Postów: 304
Pomógł: 0
Dołączył: 12.12.2006
Skąd: Pszów

Ostrzeżenie: (0%)
-----


przeczytałem właśnie PDFa z php.net: http://www.acros.si/papers/session_fixation.pdf
Jest tak dokładnie wytłumaczone jak działają Ataki Session Fixation, Session Hijacking
Tutaj dowiedziałem się o kilku innych sposobach.
Kurcze nie wiedziałem że jest tyle sposobów....

No więc tak po tych lekturach (i kilku innych) wiem że:
- nie należy umieszczać ID sesji w linku
- nie należy umieszczać ID sesji w cookie
- należy unikać serwerów współdzielonych
- nie należy klikać w linki od obcych z powodu parametru Referral, który może wyciągnąć info o Sesjach

Co należy robić:
- stosować nowatorskie metody hashowania takie na które nie ma słowników (do sha1 i i md5 już są)
- należy unikać przekazywania danych odnośnie usera w zmiennych sesyjnych
- dokładnie filtrować dane od usera tzn sprawdzać czy pola które mają być int są faktycznie int. Teksty traktować strip_tagiem i innymi funkcjami tego pokroju
- zabezpieczać newralgiczne zapytania SQL przez dodanie np mysql_real_escape_strings


Dobra a teraz kilka pytań:
skoro używam (na razie) tylko session_start() i session_destroy() to czy istnieje możliwość zaatakowania tej sesji? Nie można chyba np dodać do linku SID z numerem sesji i automatycznie ją przejąć (jeśli Id faktycznie istnieje)?
Czy można zmusić sesje do tego by nie przyjmowały ID sesji z zewnątrz? tzn linki, cookie i formy?
Czy da się zabezpieczyć jakoś wyciekanie danych poprzez użycie przez atakującego opcji Referral z spreparowanego linku?

Co do blokowania usera jeśli zaloguje się źle X razy to można dodać pole IP do tej tabeli wtedy blokuje tylko IP typa który ma konkretne IP.

Mam nadzieje że ktoś mi poradzi (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Pozdrawiam
Go to the top of the page
+Quote Post

Posty w temacie
- Avatarus   Sesje, jakie metedy najbezpieczniejsze   5.02.2008, 10:46:37
- - nowotny   Poszukaj trochę, tu na forum i w google... znajdzi...   5.02.2008, 10:55:13
- - em1X   1) Domyślnie sesja korzysta z Cookie Zaczynając s...   5.02.2008, 11:03:05
|- - sopel   Cytat(em1X @ 5.02.2008, 11:03:05 ) 2)...   5.02.2008, 11:55:01
- - Avatarus   no to ciągniemy temat dalej. Poczytałem to forum i...   5.02.2008, 13:51:04
- - sopel   CytatKolumna "ilosc blednych logowań" el...   5.02.2008, 19:20:11
|- - nowotny   Cytat(sopel @ 5.02.2008, 19:20:11 ) i...   5.02.2008, 20:01:31
- - Avatarus   przeczytałem właśnie PDFa z php.net: http://www.ac...   5.02.2008, 23:29:34
- - ucho   Możesz jeszcze zapamiętywać IP i np UserAgent podc...   6.02.2008, 10:32:45
- - .chudy.   IP może sie zmieniać jeżeli będziesz się łączyć pr...   6.02.2008, 10:46:10
- - Avatarus   no dobra ale mam teraz problem natury logicznej......   6.02.2008, 11:08:56
- - sopel   CytatNo więc tak po tych lekturach (i kilku i...   6.02.2008, 11:16:19
- - specialplan   Osobiscie dane sesji trzymam w bazie danych i ciag...   6.02.2008, 11:23:29
- - Avatarus   Cytathmm, to gdzie je zamierzasz umieścić? w tabel...   6.02.2008, 11:29:27
- - specialplan   Musisz miec unikalny ID na podstawie ktorego porow...   6.02.2008, 11:34:38
- - Avatarus   no dobra ale wytłumaczcie mi czy te session ID to ...   6.02.2008, 12:52:36
- - specialplan   To, co podales, sluzy raczej do ograniczenia przek...   6.02.2008, 13:02:05
- - Avatarus   no czyli tak jak napisałem w wyżej będzie to w peł...   6.02.2008, 13:09:11
- - specialplan   Podmiana ID nie bedzie raczej mozliwa, gdy ID sesj...   6.02.2008, 13:13:50
- - Avatarus   no czyli mogę powoli zacząć zabierać się za pisani...   6.02.2008, 13:23:04
- - bełdzio   to może tak btw http://www.beldzio.com/bezpieczens...   7.02.2008, 10:26:06
- - Avatarus   Bełdzio czytam twój blog Fajnie i zwięźle piszesz...   7.02.2008, 10:32:11
- - specialplan   @Beldzio W zasadzie moja klasa sesji jest zbudowa...   7.02.2008, 10:59:45
|- - bełdzio   Cytat(specialplan @ 7.02.2008, 10:59...   8.02.2008, 12:35:03
- - Jarod   @Avatarus: Mam własną klasę (handler) sesji. Wszys...   7.02.2008, 13:31:45
- - sammael   Jak chcecie uniknąć zapisu SIDa w ciastkach i lin...   7.02.2008, 17:53:55
- - Avatarus   no dobra ale jak ktoś ma neo to co? Szlag trafi je...   7.02.2008, 18:44:18
- - specialplan   Niekoniecznie - chyba, ze w czasie trwania sesji r...   8.02.2008, 10:13:11
- - Avatarus   no właśnie sęk w tym że potrzebuje logowanie na dł...   8.02.2008, 11:23:12
- - specialplan   O, faktycznie jest. No to mielismy bardzo podobny ...   8.02.2008, 12:37:09


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 21:13