Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][SESSION] usuwanie plików sesji
Black-Berry
post
Post #1





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


Jak działa w PHP usuwanie plików sesji? Kiedy są usuwane pliki sesyjne i wegług jakich kryteriów? Czy za każdym razem kidy odpalamy jakiś skrypt php sprawdza czas modyfikacji tych plików i usuwa np te starsze niż pół godziny?

Pisze mechanizm sesji oparty o klucz COOKIE i pliki. Nie bardzo mam sie na czym wzorować. W manualu nic nie pisze.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 18)
akurczyk
post
Post #2





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

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


Polecał bym ci zrobić tak jak wcześniej pisałem w db i odpalać crona (jeśli masz go na serwie) co np 3200 sekund żeby wywalić wiersze które są starsze niż 1600 sekund. a na początku strony umieść kod który będzie aktualizować wiersze (zmieniać w wierszu czas na aktualny). W ten sposób zyszkasz time outy a baza nie będzie zaśmiecona.
PS: Jeśli znasz c to pobierz źrudła parsera php i przeczytaj jak działa funkcja session_start.
Go to the top of the page
+Quote Post
Black-Berry
post
Post #3





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


Napisałem procedury usuwające pliki sesji. Nie używam bazy danych żeby jej nie obciążać. Czas wykonywania usunięcia niekatywnych plików to tylko 1ms i chyba nie będę z tym duzo kombinował. Myślę ze wykonam ją przy każdym pierwszym wejściu użytkownika na stronę. Czy to dobry pomysł? Crone wydaje się być za dużym problemem bo trzeba go ustawiać zewnętrznie.
Go to the top of the page
+Quote Post
akurczyk
post
Post #4





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

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


piszesz cmsa?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
jeśli tak to cron odpada
może nie na tylko na stronie głównej tylko na wszystkich podstronach.
a zaszada usuwania jest taka sama w przypadku plików jak i bazy.
ale jeśli ustawisz czas na 1s to ktoś kto przegląda stronę może nie zdążyć kliknąć w link i timeout:) polecam ci jednak ustawic na 1600 albo 3200.
ps: nie zapomnij też o weryfikacji przeglądarki, systemu itp. tak jak jest to ze zwykłymi sesjami w php.
Go to the top of the page
+Quote Post
Black-Berry
post
Post #5





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


Nie na 1s (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Czas trwania procedury usuwającej niepotrzebne pliki wynosi 1ms (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) A usuwać chcę nie na 1 stronei ale za kanym 1 uruchomieniu systemu przez użytkownika. Jeśli ktoś wchodzi na 15 podstron to procedura usuwająca niepotrzebne pliki sesyjne wykona się tylo przy 1 podstronie a później już nie żeby niepotrzebnie nie obciążać systemu.
Cytat
ps: nie zapomnij też o weryfikacji przeglądarki, systemu itp. tak jak jest to ze zwykłymi sesjami w php.
Co masz na myśli? nie weryfikuje przeglądarki. Jak działa to w php?
Go to the top of the page
+Quote Post
akurczyk
post
Post #6





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

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


puźniej ci odpowiem bo ide na działkę będę za ok 3200s:)
Go to the top of the page
+Quote Post
Shili
post
Post #7





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

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


Przy weryfikacji przeglądarki zmniejszasz ryzyko zdobycia sesji. Teraz nie wystarczy samo pobranie identyfikatora, ale również użycie dokładnie takiej samej przeglądarki, systemu operacyjnego jak ofiara kradzieży.
Go to the top of the page
+Quote Post
Black-Berry
post
Post #8





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


Jest jakiś unikatwy identyfikato przeglądarki który się zazwyczaj używa czy chodzi tylk o wersję no firefox ?
Go to the top of the page
+Quote Post
Shili
post
Post #9





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

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


Popróbuj sobie coś takiego pod różnymi przeglądarkami (a także systemami, jeśli masz). Na przykład (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
  1. <?php
  2. echo $_SERVER['HTTP_USER_AGENT'];
  3. ?>


Zawsze możesz się jeszcze zapoznać z taką funkcją: get_browser" title="Zobacz w manualu PHP" target="_manual
Go to the top of the page
+Quote Post
Black-Berry
post
Post #10





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


A czy sprawdzać raem z przeglądarka również IP ?
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%)
-----


To zależy już tylko od Ciebie. Jeśli zamierzasz robić coś w stylu "zapamiętaj mnie" to musisz brać pod uwagę ludzi ze zmiennym ip, tak samo przy długim czasie ważności sesji. To już trzeba sobie samemu przekalkulować i przemyśleć pod kątem serwisu jaki tworzysz.
Go to the top of the page
+Quote Post
akurczyk
post
Post #12





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

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


radził bym ci również zakodować w md5 session_id (numeryczne) wtedy będzie trudniej znaleść inną sesje przy przechwytywaniu.
Go to the top of the page
+Quote Post
Black-Berry
post
Post #13





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


nie no jasne. Id sessji musi być zakodowane. Klucze mam mniej więcej takiej postaci: 6f7526eaefda6ef170b56919e222d0c3oJniYe

No dobra. Mam już sesję działającą na plikach.
  • Pliki zapisują się z rozszerzeniem do którego nie ma dostępu przeglądarka (blokada w .htaccess)
  • Ciecha generują się po czasie i losowej wartosci a następnie są kodowane
  • Złodziej ciastek zostanie wykryty po zmiennej $_SERVER['HTTP_USER_AGENT']
  • pliki sesji są automatycznie usuwane po 30 minutach jesli nie są aktualizowane
Czy o czymś zapomniałem ?
Go to the top of the page
+Quote Post
akurczyk
post
Post #14





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

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


chyba tak: jeśli do generowania id sesji masz taki kod: md5(range()) to id może się powtarzać.
Go to the top of the page
+Quote Post
Black-Berry
post
Post #15





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


A takie coś się może powtórzyć?
  1. <?php
  2. $sessionId = encrypt(time(0,999999)*rand()).random_string(6);
  3. ?>
Go to the top of the page
+Quote Post
akurczyk
post
Post #16





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

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


jest bbbbbbbbbbbbbbbbbaaaaaaaaaaaaaarrrrrrrrrrrrrrrrrddddddddddddddddddddddzzzzzzzzzz
zzzzzzzzzzzzzzzzooooooooooooooo małe prawdopodobieństwo ale jednak że ktoś będzie miał fatra i w ciągu tej samej mikto sekundy się zaloguje i wylosuje akurat taki sam kod. polecam sprawdzić czy takie id już nie istnieje.
Go to the top of the page
+Quote Post
Black-Berry
post
Post #17





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


heh. Fakt. Może lepiej sprawdzić.
Go to the top of the page
+Quote Post
akurczyk
post
Post #18





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

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


może taki kod:
  1. <?php
  2. $kod = md5(time());
  3. for($i=0; $i=1; $i++) {
  4. if(/*jeżeli wygenerowany kod jest już używany*/) {
  5. $kod = md5($kod);
  6. $i=0
  7. }
  8. }
  9. echo $kod;
  10. ?>
Go to the top of the page
+Quote Post
Black-Berry
post
Post #19





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


Z generowaniem i sprawdzaniem dam sobie już radę (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) To nie problem jaikiś.
Go to the top of the page
+Quote Post

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: 25.08.2025 - 20:41