![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 64 Pomógł: 14 Dołączył: 25.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam pyt odnośnie bezpieczeństwa mojego systemu sesji. Juz tlumacze na czym on polega. Uzytkownik loguje sie poprzez strone glowna w domena.pl - nast gdy dane sa poprawne do bazy serwera s1.domena.pl zostaje wpisany rekord w tabele session (ip usera, jego id uzytkownika w serwisie, dane przegladarki -> $_SERVER['HTTP_USER_AGENT'] - czas sesji). Nastepnie user zostaje przeniesiony na strone glowna s1.domena.pl, po czym plik index.php odpowiadajacy za cala strone pobiera rekord z tej tabeli session gdzie jest takie samo ip, taka sama przegladarka oraz gdzie czas jest > czasu aktualnego (wczesniej czas sesji zostal zapisany time() + 900 czyli na 15 min). Jezeli wszystko sie zgadza system pobiera dane o userze z tabeli users ( z pomoca id usera z tabeli session) i za kazdym odswiezeniem strony aktualizuje rekord sesji w session ustawiajac ponownie sesje wazna na 15 min (przez co mozna sprawdzic kiedy jest aktywny). I to chyba na tyle, prosilbym o jakies odpowiedzi czy jest to bezpieczne, a jesli nie jest to jakies male wytlumaczenie
![]() |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
W teorii odradza się trzymanie sesji na serwerach współdzielonych - ktoś może przechwycić twoje sesje. Ile w tym prawdy nie wiem - sam od dawna używam tylko cookie i bazy danych. Daje mi to większe pole manewru niż "zwykłe" sesje np. zamkniecie przeglądarki nie powoduje wylogowania no i z bezpieczeństwem też nigdy nie miałem problemów.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
W teorii odradza się trzymanie sesji na serwerach współdzielonych - ktoś może przechwycić twoje sesje. Ile w tym prawdy nie wiem Był ten temat poruszany, choćby zmienić ścieżkę gdzie będą trzymane pliki sesji. Daje mi to większe pole manewru niż "zwykłe" sesje np. zamkniecie przeglądarki nie powoduje wylogowania A od kiedy sesje z php przy zamknięciu się tracą, zakładając że cookie nie są usuwane? no i z bezpieczeństwem też nigdy nie miałem problemów. Nie ma kodu, nie ma o czym dyskutować. Możesz się pochwalić jak zabezpieczyłeś. ;] -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Cytat W teorii odradza się trzymanie sesji na serwerach współdzielonych - ktoś może przechwycić twoje sesje. Ile w tym prawdy nie wiem - sam od dawna używam tylko cookie i bazy danych. Daje mi to większe pole manewru niż "zwykłe" sesje np. zamkniecie przeglądarki nie powoduje wylogowania no i z bezpieczeństwem też nigdy nie miałem problemów. Nie wiem ,ale czytałem gdzieś ,że popularne allegro zbudowane n php ,w taki sposób przechowuje sesje. A pro po tematu , sesje można także trzymać w bazie danych ,trochę bezpieczniejsze niż tradycyjna metoda. Ten post edytował Rid 25.05.2011, 00:06:47 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Był ten temat poruszany, choćby zmienić ścieżkę gdzie będą trzymane pliki sesji. No i teraz wyobraź sobie początkującego programistę, który ustawi ścieżkę na folder główny strony i jej odpowiednio nie zabezpieczy ![]() A od kiedy sesje z php przy zamknięciu się tracą, zakładając że cookie nie są usuwane? Nie mówię o cookie tylko o "zwykłych" sesjach [dla jasności ;P session_start, session_close]. Nie wiem jak u Ciebie ale ja po restarcie przeglądarki muszę się logować na serwisy, które nie korzystają z cookie ![]() Nie ma kodu, nie ma o czym dyskutować. Możesz się pochwalić jak zabezpieczyłeś. ;] Hehe to się szantaż emocjonalny nazywa ![]() Rid: tylko jest pewna różnica między zespołem pracującym w allegro a ludźmi odwiedzającymi to forum ;] zwie się doświadczenie Cytat A pro po tematu , sesje można także trzymać w bazie danych ,trochę bezpieczniejsze niż tradycyjna metoda. Mylisz pojęcia.. pliki sesji nadal istnieją na serwerze nawet jeżeli ich "odpowiednik"(nie wiem jak to nazwać) trzymasz w bazie Ten post edytował CuteOne 25.05.2011, 01:07:30 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Nie wydaje mi się- po stronie serwera przechowywany jest tylko id sesji,wartość sesji natomiast przechowywana jest w bazie.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
No a o czym ja mówię... hjacking
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Myśli Pan ,że będzie możliwy Session Hijacking,jak się stronkę jak i połączenie z bazą MYSQL postawi na SSL?
![]() Myślę ,że normalna sesja jest bardziej narażona na ataki. |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Hmmm jak by Ci to wytłumaczyć.. załóżmy, że logujesz się na jakiś serwis, który nie używa ciasteczek(serwer tworzy ID aktualnej sesji). Wchodzisz na podstronę np. Edytuj konto i podczas tego przejścia ID sesji z twojej przeglądarki zostaje przesłane z powrotem na serwer i tam porównane. W ten właśnie sposób serwer rozpoznaje kto jest kto. Teraz wyobraź sobie, że znalazłem folder z zapisanymi aktualnymi sesjami, więc podpinam się pod jedną z nich i spokojnie edytuję sobie np. Twoje hasło do konta
![]() I SSL nie ma tu co robić ponieważ nie przechwytuję request'a tylko biorę gotowca z serwera ;] |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli włamywacz ma dostęp do serwera to żadne zabezpieczenia Ci nic nie dadzą.
![]() Co do zmiany ścieżki - fakt, jest to niezwykle trudne. ^^ Zacznijmy od tego - jeżeli kradniemy sesje, to nie z serwera a komputera użyszkodnika. Jeżeli wykradniemy ID sesji, to nie ma różnicy czy było w cookie czy w pasku adresu bo dostęp prawdopodobnie będziemy mieli (nie licząc sprawdzania ip, przeglądarki) Poza tym, nie mieliśmy rozmawiać o wykradaniu sesji, lecz o zabezpieczeniach. -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Cytat I SSL nie ma tu co robić ponieważ nie przechwytuję request'a tylko biorę gotowca z serwera Ja proponuję artykuł na ten temat: http://niebezpiecznik.pl/post/firesheep-fi...ataki-na-sesje/ A jak ktoś ,nie jest pewny bezpieczeństwa SSL to może jeszcze skorzystać z IPSec-i myśle ,że raczej przechwycenie sesji nie będzie możliwe. Cytat Poza tym, nie mieliśmy rozmawiać o wykradaniu sesji, lecz o zabezpieczeniach A czym jest SSL? ![]() |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 314 Pomógł: 44 Dołączył: 12.11.2010 Skąd: UK Ostrzeżenie: (0%) ![]() ![]() |
@up ... chyba niedoczytałeś co ten firesheep robi .
Cytat Firesheep to dodatek do Firefoksa, który w prosty sposób automatyzuje kradzież ciastek i podszywanie się pod przechwycone sesje — wystarczy podłączyć się do otwartego Wi-Fi (np. w jakiejś galerii handlowej) Czyli to jest po prostu sniffer , to nie problem naszego skryptu bo ktoś może mieć cały batalion , a sprawdzanie IP w tym przypadku nie pomoże .. bo łączymy się przez to samo Wi-Fi . Ale sprawdzenie useragenta już może dać jakiś efekt co nie? |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Rid: ja nie mówię o podsłuchach... tylko wykradnięciu sesji u źródła... dlatego SSL nie będzie miało znaczenia :|
nekomata: IP i useragent... hmmm w dobie zmiennego IP neostrady punkt 1 odpada. Jedynym rozsądnym wyjściem wydaje się sprawdzenie wersji przeglądarki.. |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 314 Pomógł: 44 Dołączył: 12.11.2010 Skąd: UK Ostrzeżenie: (0%) ![]() ![]() |
Zmienne IP eliminuje możliwość? Czy ja wiem ? Można dodać monit o powtórne podanie hasła w przypadku innego ip + tickbox "nie pytaj ponownie" , w ten sposób użytkownicy których nie obchodzi bezpieczeństwo mają spokój , a bezpieczni mają swoją rzecz.
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
nekomata: IP i useragent... hmmm w dobie zmiennego IP neostrady punkt 1 odpada. Jedynym rozsądnym wyjściem wydaje się sprawdzenie wersji przeglądarki.. Co Ty pier... gadasz. Co ma zmienne ip do sesji? W czasie sesji ip się nie zmienia, chyba że zostaniemy rozłączeni ew. sami się rozłączymy i połączymy ponownie. -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 314 Pomógł: 44 Dołączył: 12.11.2010 Skąd: UK Ostrzeżenie: (0%) ![]() ![]() |
Może zsumujmy co robimy do zabezpieczenia sesji , według mnie to :
1.Blokujemy XSS (javascripty w postach itd ,podstawa ale warto wymienić) 2.Sprawdzanie User Agent'a : jeśli user agent inny niż w poprzedniej sesji -> niszczymy. 3.Sprawdzanie IP użytkownika : jeśli inne -> wyrzucamy monit i ponowne wpisanie hasła . 4.Zmieniamy folder zapisu sesji (własny session handler albo session_save_path ) To by chyba było na tyle? @autor topic'u Cytat wczesniej czas sesji zostal zapisany time() + 900 czyli na 15 min jeśli nie zmienisz domyślnego czasu sesji (10 minut) to może gdzieś się skrypt wywalić .
Ten post edytował nekomata 25.05.2011, 16:38:37 |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Ja bym jeszcze do wyżej wymienionego postu dodał:
ustawienie flag secure oraz httpOnlyCoockie na true dla sesji .Jak to zrobić: http://php.net/manual/en/function.session-...okie-params.php |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 19:15 |