Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Ochrona przed przechwyceniem i ustawieniem sesji?
xajart
post
Post #1





Grupa: Zarejestrowani
Postów: 141
Pomógł: 1
Dołączył: 2.12.2008

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


Moje pytanie dotyczy się tematu. Jak najlepiej ochronić mechanizm sesji?

Całe dzień dzisiaj szukam po necie materiałów na ten temat i z tych istotniejszych znalazłem coś takiego

1) Ochrona przed ustawieniem sesji

Kod
ini_set('session.ude_only_cookies', true);
session_start();
if (!isset($_SESSION['generated']) || $_SESSION['generated'] < (time()-30)) {
session_regenerate_id();
$_SESSION['generated']=time();
}


Jak dobrze rozumie to co 30 sekund jest generowany nowy PHPSESSID - ten sposób ma utrudniać ustawienie sesji. Ale nie dokońca rozumie cel tego. Rozumie że kiedy zmienia sie ID Sesji, wówczas parametry które są w tej sesji zapisane, komuś z zewnątrz utrudni to dostęp do nich. 

2) Ochrona przed przechwyceniem sesji

Na ten temat wyczytałem że dobrze jest stosować wygenerowane tokeny, ale nie bardzo wiem w jaki sposób wygenerować ten unikalny token i jak to rozwiązać. Rozumie że kiedy np użytkowni loguje się do systemu, skrypt po przejściu przez walidator danych i weryfikacje użytkownika, generuje token, który z kolei ma być dołańczany do wszystkich linków np po przez
Kod
outpu_add_rewrite_var('token', $token);

A dodatkowo w formularzach zamieszczać ten token jako ukryty i potem sprawdzać jego poprawność. 

Tylko nasuwają mi się tutaj pytania w stylu. Jak wygenerować unikalny token? taki który zmieniał by się po określonym czasie i jak przypuszczalnie długi ten czas ma być 1 dzień, tydzień, a może miesiąć. Druga kwestia dotyczy właśnie uniklaności tego tokena, by był genrowany nowy kiedy użytkownik się wyloguje a następnie ponownie zaloguje. Myslałem nad różnymi kwestiami. Jeżeli chciałbym aby np token był generowany raz na dzień, to mógłbym przypuszczalnie zastosować generowanie na podstawie IP (ale jeżeli z systemu będą korzystać osoby w jakiejś wewnętrznej sieci, to nie ma to sensu). Generowanie po nazwie użytkownika, ale kiedy użytkownik się wyloguje i ponownie zaloguje to dalej będzie miał taki sam token. W jaki sposób rozwiązać skrypt generujacy token? Jeżeli będzie generowany np co określony czas nowy, to będzie użytkownika zalogowanego wyrzucać z systemu, wobec tego czy zapisywać go w cookisach? ale ktoś może mieć wyłączone cookisy więc zostają tylko sesje, albo baza danych. Gdzieś czytałem o "tablicy routingu" ale nie bardzo wiem o co z tym chodzi. 


A może w jakiś inny sposób zabezpieczać sesje ?

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A czytasz czasem przyklejone wątki?

Temat: Bezpieczestwo skryptw PHP
Go to the top of the page
+Quote Post
xajart
post
Post #3





Grupa: Zarejestrowani
Postów: 141
Pomógł: 1
Dołączył: 2.12.2008

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


Cytat(marcio @ 21.11.2009, 02:02:55 ) *
Wystarczy sprawdzanie np ip i przegladarki.

Nad tym myślałem, ale jeżeli z systemu będą korzystać osoby wewnatrz firmy, gdzie zewnętrzny IP mają wszyscy taki sam, a oprogramowanie jest ustandaryzowane to każdy na swoim kompie będzie miał to samo IP i taką samą przeglądarkę. Więc może dojśc do sytuacji że admin będzie miał ten sam token co zwykły użytkownik firmy. 



 
Cytat(erix @ 21.11.2009, 10:28:59 ) *
A czytasz czasem przyklejone wątki?
Temat: Bezpieczestwo skryptw PHP



Ten wątek przeoczyłem pewnie dlatego że mowa o sesjach jest dopiero gdzieś przy końcu, ale przeczytałem go od początku i jest ogólnie opisany o tym co wszędzie a nie ma dogłębnego opisu jak to najlepiej rozwiażać. Ale skoro istnieje taki wątek to by tego nie przedłużać, opiszę tam to co mnie interesuje, może ktoś odpowie.
Go to the top of the page
+Quote Post

Posty w temacie


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: 29.12.2025 - 07:21