Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Własny mechanizm sesji
Nostress
post 28.05.2006, 12:20:57
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 28.05.2006

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


Witam wszystkich w moim pierwszym poście aarambo.gif

Mam już za sobą napisanie kilku mniejszych czy średnich projektów, gdzie do sprawdzenia zalogowanego użytkownika używam sesji - co ważne - tych "wbudowanych" w php. Użycie tego jest proste, ale mimo to często spotykamy się ze stanowiskiem, że warto napisać sobie swój własny mechanizm (oparty na bazie danych). Stąd moich kilka pytań:

1. Czy napisanie własnego mechanizmu (przyjmując, że zostanie on napisany dobrze) zwiększy bezpieczeństwo stron? Jeśli tak, to co jest niebezpiecznego w używaniu wbudowanych w php sesji?

2. Zacząłem pisać taki mechanizm, i dochodzę do wniosku, że aby uzyskać taką funkcjonalność jak wbudowany system nieuchronnie mój skrypt będzie miał o kilka zapytań mysql więcej, więc podejrzewam, że własny mechanizm będzie wolniejszy, myle się?

Narazie tyle, ale jeszcze coś mi się nasunie z pewnością smile.gif,

Pozdrawiam.
Go to the top of the page
+Quote Post
mike
post 28.05.2006, 12:30:41
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Polecam bardzo dobre dwa artykuły o sesjach, znajdujące się na webcity.pl
1. Sesje w php - przyda Ci się do odpowiedzi na pierwsze pytanie;
2. Własny mechanizm sesji w php.
Co do zwolnienia aplikacji ... coś za coś. Jedno zapytanie więcej nie jest niczym bardzo strasznym.
Go to the top of the page
+Quote Post
Nostress
post 28.05.2006, 12:45:08
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 28.05.2006

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


Hmmmm.. po przeczytaniu "Sesje w php" stwierdzam, że tworzenie swojego własnego mechanizmu sesji nie będzie bardziej bezpieczne niż sesje wbudowane w php.

W obu przypadkach (wbudowane sesje vs "Własny mechanizm sesji" z webcity) system korzysta z ciastek, a reszta danych znajduję sie na serwerze.

Wniosek: ceniąc bezpieczeństwo i szybkość skryptów lepiej korzystać z sesji wbudowanych? :/
Go to the top of the page
+Quote Post
em1X
post 28.05.2006, 13:08:16
Post #4





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


(prawie) Zawsze lepiej polegac na pracy profesjonalistów..


--------------------
eh, co polska wódka to polska wódka
Go to the top of the page
+Quote Post
erix
post 28.05.2006, 18:38:16
Post #5





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




Cytat
Hmmmm.. po przeczytaniu "Sesje w php" stwierdzam, że tworzenie swojego własnego mechanizmu sesji nie będzie bardziej bezpieczne niż sesje wbudowane w php.

Wezmy pod uwage jeden przyklad: masz system zarzadzania userami. Chcesz zapobiec rownoczesnemu zalogowaniu tego samego uzytkownika z dwoch roznych komputerow. Bez wlasnego handlera do sesji tego nie osiagniesz.


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
mike
post 28.05.2006, 18:47:44
Post #6





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


No i skrypty takie jak "Who's online" są banalne do wykonania z własnym handlerem.
Wszystko zależy od tego czego potrzebujesz.

Jak to powiedział kiedyś prezydent Wałęsa:
"Są plusy dodatnie i plusy ujemne" smile.gif
Go to the top of the page
+Quote Post
Nostress
post 28.05.2006, 19:53:43
Post #7





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 28.05.2006

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


Ok, to teraz problem natury technicznej.

Używając wbudowanych sesji można tworzyć sobie zmienne, przykładowo:

  1. <?php
  2. $_SESSION['zmienna'] = 'wartosc';
  3. ?>


Jak to rozwiązać przy pisaniu własnego systemu sesji?

Po krótkim zastanowieniu dochodzę do wniosku, że można by to rozwiązać tak:

1. Tworzymy nową tabelke w mysql o strukturze:
session_id | key | value | time

2. Następnie tworzymy jakąś funkcyjke służącą tworzeniu nowych "zmiennych sesyjnych" mniej-wiecej:
  1. <?php
  2. data_register( $key, $value )
  3. {
  4.  // umieszczamy nową daną w naszej tabelce
  5. }
  6. ?>


3. A później tylko funkcja, która pobierze nam nasze dane z bazy i wrzuci w jakąś tablice.

Jak wy to zrobiliście?
Go to the top of the page
+Quote Post
SongoQ
post 28.05.2006, 20:54:27
Post #8





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Cytat
Jak wy to zrobiliście?

W PG i Oracle zrobilem w ten sposob ze jedna funkcja zalatwiam wszystko (funkcja DB) tak naprawde po stronie php jest wywolywanie caly czas ten funkcji czyli zapytanie SQL'a i od parametrow zalezy co ma sie dziac. Dla MySQLa musisz pisac update, insert, select i delete w zaleznosci co chesz zrobic.


--------------------
Go to the top of the page
+Quote Post
erix
post 28.05.2006, 21:08:48
Post #9





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




Cytat
tworzeniu nowych "zmiennych sesyjnych"

a na szto?

Masz przeciez serialize(), potem wrzucasz calosc do bazy (zmienne zserializowane) i potem przywracasz jak chcesz; nie musisz robic balaganu w bazie.

Cytat
Dla MySQLa musisz pisac update, insert, select i delete

O ile mi wiadomo, to od ktorejs wersji MySQL-a mozna tworzyc wlasne funkcje w bazie biggrin.gif


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
SongoQ
post 28.05.2006, 21:12:01
Post #10





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Cytat
O ile mi wiadomo, to od ktorejs wersji MySQL-a mozna tworzyc wlasne funkcje w bazie

Od 5.0 heheh az mi z glowy wylecialo. @erix dzieki za przypomnienie.


--------------------
Go to the top of the page
+Quote Post
dr_bonzo
post 28.05.2006, 21:29:12
Post #11





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cytat
Jak to rozwiązać przy pisaniu własnego systemu sesji?

Tutaj sei nic nie zmienia -- ciagle korzystasz z $_SESSION

Napisanie wlasnego handlera sesji to napisanie kilku funkcji (mozna wrzucic do klasy), ktore zapisuja i odczytuja stringa i date (mozna oczywiscie dodac wiecej funkcjonalnosci). To tyle. Szczegoly w manualu o Sesjach.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Black-Berry
post 1.09.2008, 08:54:40
Post #12





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

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


Cytat(erix @ 28.05.2006, 19:38:16 ) *
Wezmy pod uwage jeden przyklad: masz system zarzadzania userami. Chcesz zapobiec rownoczesnemu zalogowaniu tego samego uzytkownika z dwoch roznych komputerow. Bez wlasnego handlera do sesji tego nie osiagniesz.

Sory za wykop ale chciałbym o coś zapytać... Jestem raczej przeciwnikiem sessji opartej o bazę danych bo zależy mi na wydajności i zastanawiam się czy problem który podajesz nei mógłby być rozwiązany za pomocą tego: session_set_save_handler. Czy użycie własnych metod zapisu nie wpłynełoby jednocześnie na poprawę bezpieczeństwa, pozwoliło na zaawansowane zarządzanie i nie nadwyrężałoby bazy danych ? 3 pieczenie przy jednym ogniu. Może ktoś ma doświadczenie z takim rozwiązaniem ?

Ten post edytował Black-Berry 1.09.2008, 11:56:34


--------------------
Go to the top of the page
+Quote Post
Sh4dow
post 1.09.2008, 13:45:47
Post #13





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

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


jako "przechowalni danych" możesz użyć bazy danych, plików lub np. memcache. A klasie/funkcje które będą to obsługiwały to już inna sprawa i zazwyczaj zależy ona od ciebie co chcesz w niej mieć.


--------------------
Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota
Zarządzaj swoim budżetem domowym
Go to the top of the page
+Quote Post
Black-Berry
post 1.09.2008, 13:49:20
Post #14





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

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


No tak ale czemu rozwiązanie w wersji na plikach miałoby mieć jakieś wady? Jeśli nadpiszemy orginalne funkcje php to nie ma żadnych wad bo można sobie zrobić z nimi co się chce no i nie muli baza. Nie siedziałem jeszcze nad tym ale mam zamiar się zabrać więc jeśli ktokolwiek mógłby coś dorzucić dp tematu to byłbym wdzięczny smile.gif

Ten post edytował Black-Berry 1.09.2008, 13:50:50


--------------------
Go to the top of the page
+Quote Post
Sh4dow
post 1.09.2008, 13:53:01
Post #15





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

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


całe szczęście nikt nie wymusza używania bazy danych. Jest to najczęstsze rozwiązanie ponieważ zarządzanie danymi jest dość proste i wiele pracy jest zrzucone na bazę danych zamiast na kod programisty. Ja osobiście używam w paru miejscach memcache, ale niestety tez wbudowanego w php i jak na razie działa bez problemów. No ale trzeba mieć własny serwer.


--------------------
Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota
Zarządzaj swoim budżetem domowym
Go to the top of the page
+Quote Post
Asmox
post 27.01.2009, 18:09:32
Post #16





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

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


Cytat(erix @ 28.05.2006, 18:38:16 ) *
Wezmy pod uwagę jeden przykład: masz system zarządzania userami. Chcesz zapobiec równoczesnemu zalogowaniu tego samego użytkownika z dwóch róznych komputerów. Bez własnego handlera do sesji tego nie osiągniesz.


A co jest złego w równoczesnym zalogowaniu tego samego usera z dwóch różnych komputerów?
I co to jest handler?


--------------------
Go to the top of the page
+Quote Post
nospor
post 27.01.2009, 19:49:14
Post #17





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




Cytat
A co jest złego w równoczesnym zalogowaniu tego samego usera z dwóch różnych komputerów?
W normalnej sytuacji nic. Ale czasami mozesz miec potrzebe, by na to nie pozwalac.

Cytat
I co to jest handler?

http://pl.php.net/manual/pl/function.sessi...ave-handler.php


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

"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

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 Wersja Lo-Fi Aktualny czas: 12.06.2025 - 20:43