![]() |
![]() ![]() |
![]() |
![]()
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
![]() 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ą ![]() Pozdrawiam. |
|
|
![]()
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. |
|
|
![]()
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? :/ |
|
|
![]()
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
|
|
|
![]()
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! |
|
|
![]()
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" ![]() |
|
|
![]()
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:
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:
3. A później tylko funkcja, która pobierze nam nasze dane z bazy i wrzuci w jakąś tablice. Jak wy to zrobiliście? |
|
|
![]()
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. -------------------- |
|
|
![]()
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 ![]() -------------------- ![]() 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! |
|
|
![]()
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. -------------------- |
|
|
![]()
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.
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 663 Pomógł: 6 Dołączył: 3.06.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
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 -------------------- http://www.berry.nazwa.pl/edico/public_html/index.php ----> under construction
|
|
|
![]() ![]()
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 |
|
|
![]()
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
![]() Ten post edytował Black-Berry 1.09.2008, 13:50:50 -------------------- http://www.berry.nazwa.pl/edico/public_html/index.php ----> under construction
|
|
|
![]() ![]()
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 |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 359 Pomógł: 12 Dołączył: 16.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
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? -------------------- |
|
|
![]()
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 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 12.06.2025 - 20:43 |