Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> zabezpieczenia przed podmianą sesji
jarmiar
post
Post #1





Grupa: Zarejestrowani
Postów: 616
Pomógł: 12
Dołączył: 16.07.2006
Skąd: : getCity ( );

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


Witam,

Jak można zabezpieczyć skrypt przez podmianą sesji (session poisoning) questionmark.gif


Proszę o porady, bo ostatnio jedna osoba weszła mi do panelu admina ;p


--------------------
Jeśli my czegoś nie zrobimy, zrobią to za nas inni
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




a skad wiesz ze to spowody dziury w sesji ci weszli do admina? Powodow moze byc multum. Jakiś konkretny powod by tak myslec?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
jarmiar
post
Post #3





Grupa: Zarejestrowani
Postów: 616
Pomógł: 12
Dołączył: 16.07.2006
Skąd: : getCity ( );

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


gościu który to zrobił napisał do mnie na gg


--------------------
Jeśli my czegoś nie zrobimy, zrobią to za nas inni
Go to the top of the page
+Quote Post
Mlodycompany
post
Post #4





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


daj kod. bez kodu ciezko powiedziec
Go to the top of the page
+Quote Post
jarmiar
post
Post #5





Grupa: Zarejestrowani
Postów: 616
Pomógł: 12
Dołączył: 16.07.2006
Skąd: : getCity ( );

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


ustawiam sobie zmienną sesyjną i potem sprawdzam czy ma określonbą wartość


--------------------
Jeśli my czegoś nie zrobimy, zrobią to za nas inni
Go to the top of the page
+Quote Post
leovandamon
post
Post #6





Grupa: Zarejestrowani
Postów: 41
Pomógł: 3
Dołączył: 5.01.2008
Skąd: Czwarty Świat

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


Ja w skryptach zabezpieczam się tak:

Kod
<?php
// Session
session_start();

// Logs and user control
if(!isset($_SESSION['ip']) || empty($_SESSION['ip'])) {
    $line = '['.date('d.m.Y H:i:s').'] IP: '.$_SERVER['REMOTE_ADDR'].' SESSION: '.$_COOKIE["PHPSESSID"]."\n\t\t".$_SERVER['HTTP_USER_AGENT']."\n";
    $file = fopen('log.txt','a');
    if($file) {
        fwrite($file,$line);
        fclose($file);
        $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
        $_SESSION['id'] = $_COOKIE['PHPSESSID'];
    }
}
if($_SESSION['ip']!==$_SESSION['ip'] || $_SESSION['id']!==$_COOKIE['PHPSESSID']) {
    session_unset(); session_regenerate_id();
}
?>


Kod sprawdza, czy jest to nowa sesja. Jeśli tak, zapisuje logi (data, IP usera, ID sesji i dane o przeglądarce do pliku log.txt.
Następnie sprawdza, czy IP usera zgadza się z IP zapisanym w sesji oraz ID sesji zgadza się z tym wysłanym w ciasteczku.
Jeśli coś jest nie tak, zmienia userowi identyfikator, a ten nawet nic nie zauważa.

Pozdrawiam,
Leo van Damon


--------------------
Mój blog: http://test.dragonsheart.eu/
DH Corp: http://www.dhcorp.pl/
Go to the top of the page
+Quote Post
jarmiar
post
Post #7





Grupa: Zarejestrowani
Postów: 616
Pomógł: 12
Dołączył: 16.07.2006
Skąd: : getCity ( );

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


i to rozwiązanie na pewno pomoze przed atakami zwiazanymi z podmiana sesji?questionmark.gif?


--------------------
Jeśli my czegoś nie zrobimy, zrobią to za nas inni
Go to the top of the page
+Quote Post
gino
post
Post #8





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

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


Cytat(leovandamon @ 13.07.2008, 10:06:52 ) *
Następnie sprawdza, czy IP usera zgadza się z IP zapisanym w sesji oraz ID sesji zgadza się z tym wysłanym w ciasteczku.
Jeśli coś jest nie tak, zmienia userowi identyfikator, a ten nawet nic nie zauważa.

Pozdrawiam,
Leo van Damon


Jak na razie to Twój kod sprawdza czy IP w sesji jest identyczny z ... IP w sesji;

jarmiar przyłączam się do posu wyżej o jakiś kod do wglądu.

pozdrawiam gino
Go to the top of the page
+Quote Post
vokiel
post
Post #9





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


może tak:
  1. <?php
  2. //wlasny mechanizm sesjii chroniący przed Session Hijacking, Session Fixation,
  3. if (!isset($_SESSION['kontrola_sesji'])){
  4. $_SESSION['kontrola_sesji'] = true;
  5. $_SESSION['adres_ip'] = $_SERVER['REMOTE_ADDR'];
  6. }
  7. if($_SESSION['adres_ip'] !== $_SERVER['REMOTE_ADDR']){
  8. echo 'Błąd: Próba przejęciaa sesji!';
  9. }
  10. ?>


--------------------
Go to the top of the page
+Quote Post
jarmiar
post
Post #10





Grupa: Zarejestrowani
Postów: 616
Pomógł: 12
Dołączył: 16.07.2006
Skąd: : getCity ( );

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


a co z session poisoning?? co poradzic na to?


--------------------
Jeśli my czegoś nie zrobimy, zrobią to za nas inni
Go to the top of the page
+Quote Post
Shili
post
Post #11





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


session_use_cookies_only, regeneracja id sesji, kontrola ip i zabezpieczenie przed wstrzyknięciem szkodliwego kodu w treści wysyłane przez userów powinno spokojnie, a nawet bardziej niż spokojnie wystarczyć.

Oczywiście, jeśli w grę nie wchodzi współdzielony katalog z sesjami. Zawsze można się jeszcze posiłkować session_save_path()

Ten post edytował Shili 15.07.2008, 13:22:23
Go to the top of the page
+Quote Post
artega
post
Post #12





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

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


Do tego może się jeszcze przydać ciastko zawierające identyfikator sesji z atrybutem HttpOnly.
Go to the top of the page
+Quote Post
jarmiar
post
Post #13





Grupa: Zarejestrowani
Postów: 616
Pomógł: 12
Dołączył: 16.07.2006
Skąd: : getCity ( );

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


Ok dzięki za rady smile.gif


--------------------
Jeśli my czegoś nie zrobimy, zrobią to za nas inni
Go to the top of the page
+Quote Post
zimi
post
Post #14





Grupa: Zarejestrowani
Postów: 233
Pomógł: 9
Dołączył: 3.06.2007

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


Cytat
Oczywiście, jeśli w grę nie wchodzi współdzielony katalog z sesjami. Zawsze można się jeszcze posiłkować session_save_path()


mógłbyś konkretniej? a co gdy w grę wchodzi współdzielony katalog z sesjami?
Go to the top of the page
+Quote Post
Shili
post
Post #15





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Mogłabyś.

W przypadku takiej konfiguracji, gdzie konta mają dostęp do tych samych katalogów sesyjnych istnieje możliwość dokopania się do sesji z innego konta. W przypadku domyślnych ustawień serwera dochodzi do głosu także directory traversal, ale to trochę inna bajka.

Ten post edytował Shili 15.07.2008, 19:26:30
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 21:13