[CodeIgniter]sesja |
[CodeIgniter]sesja |
9.03.2013, 10:30:00
Post
#1
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 3 Dołączył: 12.03.2011 Skąd: Opole Ostrzeżenie: (0%) |
Od niedawna zacząłem poznawać CI.
Zauważyłem, że domyślnie codeigniter zapisuje dane sesyjne w (a nie tylko identyfikator) ciastku. Wiem, że można zmienić magazyn na bazę, ale to mi też nie odpowiada. Da się zmienić jakoś ustawienia, aby CI przechowywał sesje na dysku w określonej przeze mnie lokalizacji? |
|
|
9.03.2013, 11:39:01
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) |
Wszystko się da, ale musiałbyś przepisac całą biblitekę sesji, bo nie ma tam w tej chwili ani jednej lini która pomogła by zaimpementować przechowywanie danych sesji na dysku.
Co do przechowyywania danych sesji w bazie danych, to moim zdaniem codeigniter jest bugowaty, nawet jeśli zmienisz w config 'use_database' na TRUE, dane nadal siedza w cookie. W rezultacie jesli sprobujesz zapisac do sesji zbyt dużo danych, przekroczysz limit rozmiaru cookie i stanie się najgorsze - utracisz sesję. Na szczecie udało mi się zmodyfikować tą iblitekę i naprawić błąd, jesteś zainteresowany, napisz. Ten post edytował wNogachSpisz 9.03.2013, 11:41:05 |
|
|
9.03.2013, 12:26:55
Post
#3
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 3 Dołączył: 12.03.2011 Skąd: Opole Ostrzeżenie: (0%) |
Dzięki za info, ale chyba po prostu skorzystam z natywnych sesji ...
Z innnych dobrodziejstw CI będę jak najbardziej korzystał Tak czy inaczej leci Pomógł za naświetlenie sprawy |
|
|
9.03.2013, 16:30:15
Post
#4
|
|
Grupa: Zarejestrowani Postów: 273 Pomógł: 52 Dołączył: 3.02.2013 Skąd: Przemyśl Ostrzeżenie: (0%) |
A tak mi się przypomniało na temat sesji w bazie danych w CodeIgniter
W ich dokumentacji jest przedstawiony przykładowy schemat tabeli do przechowywania sesji
Uprzedzam, że kolumna user_agent powinna mieć więcej niż VARCHAR(120) - dla niektórych przeglądarek to za mało i miałem przypadki, że userów wylogowywało bez powodu. Było to właśnie związane z tym, że user agent w bazie był ucinany, a problem jest ciężki w zlokalizowaniu. Przykład User Agent (176 znaków) Cytat Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Mozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.25 (jaunty) Firefox/3.8
Ten post edytował mstraczkowski 9.03.2013, 16:43:54 -------------------- Jeżeli moja wypowiedź Ci pomogła użyj przycisku
|
|
|
9.03.2013, 16:50:45
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) |
Uprzedzam, że kolumna user_agent powinna mieć więcej niż VARCHAR(120) - dla niektórych przeglądarek to za mało i miałem przypadki, że userów wylogowywało bez powodu. @mstraczkowski: Ciekaw jestem w jakiej wersji, bo na pewno nie w ostatniej, user agent zostaje przycięty do 120 znaków i wszystko jest w porządku. @acidm: Moim zdaniem robisz błąd i powinieneś zostać przy implementacji sesji proponowanej przez codeignitera, daje ona większą elastyczność oraz większe bezpieczeństwo od natywnej sesji PHP. |
|
|
9.03.2013, 20:33:43
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 043 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) |
zapisywanie danych sesji w ciastku daje większą elastyczność i bezpieczeństwo ? niby jak ?
|
|
|
9.03.2013, 20:36:55
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) |
Nie napisałem że zapisywanie danych sesji w ciastku daje większe bezpieczeństwo i elastyczność.
Napisałem że używanie implementacji sesji dostarczanej w codeigniterze daje wiekszą elastyczność i bezpieczeństwo. To tak jakbym napisał, że używanie samochodu daje większą elastyczność i bezpieczęństwo niż podróżowanie autobustem, na co ty byś spytał - Jak przemieszczanie się samochodem o niebieskim kolorze i bezdentkowych oponach wpływa na elastycznośc i bezpieczeństwo. Ten post edytował wNogachSpisz 9.03.2013, 20:38:59 |
|
|
9.03.2013, 21:13:53
Post
#8
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 3 Dołączył: 12.03.2011 Skąd: Opole Ostrzeżenie: (0%) |
|
|
|
9.03.2013, 21:50:50
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 043 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) |
Nie napisałem że zapisywanie danych sesji w ciastku daje większe bezpieczeństwo i elastyczność. Napisałem że używanie implementacji sesji dostarczanej w codeigniterze daje wiekszą elastyczność i bezpieczeństwo. ok tylko że implementacja sesji w CI zapisuje dane w ciastku więc (sesja w CI == zapis danych w ciastku) oraz (sesja w CI == większą elastyczność i bezpieczeństwo) => zapis danych w ciastku == większą elastyczność i bezpieczeństwo |
|
|
9.03.2013, 21:52:47
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) |
Nie. Fakt że sesja jest zaimplementowana bez polegania na natywnym mechnizmie sesji daje większe bezpieczeństwo i elastyczność.
Ten post edytował wNogachSpisz 9.03.2013, 21:53:22 |
|
|
9.03.2013, 22:29:55
Post
#11
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 3 Dołączył: 12.03.2011 Skąd: Opole Ostrzeżenie: (0%) |
Nie. Fakt że sesja jest zaimplementowana bez polegania na natywnym mechnizmie sesji daje większe bezpieczeństwo i elastyczność. IMO to że sesja w CI nie działa na natywnych sesjach samo w sobie mówi mi tylko tyle że mechanizm ten nie bedzie podatny(uzależniony) od ewentualnych zmian w natywnym mechanizmie sesji php...I nic poza tym. Przytocz proszę argumenty większego bezpieczeństwa i elastyczności sesji w CI. |
|
|
9.03.2013, 22:49:31
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) |
mechanizm ten nie bedzie podatny(uzależniony) od ewentualnych zmian w natywnym mechanizmie sesji Zmian i bugów... Wszystkiego nie napiszę, bo mój altruizm i chęć dzielenia się wiedzą mają swoje granice Elastyczność: Wyobraź sobię, że masz konto na hostingu gdzie funkcja ini_set jest zablokowana, nie możesz zmieniać konfiguracji sesji, w takiej sytuacji CI daje większą elastyczność. Ten post edytował wNogachSpisz 9.03.2013, 23:01:46 |
|
|
10.03.2013, 00:32:09
Post
#13
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) |
Kurde, korzystam z CI i teraz się dopiero zorientowałem że sesje trzymane są domyślnie w ciachu i to jeszcze z jawnymi nazwami :/
-------------------- |
|
|
10.03.2013, 08:34:46
Post
#14
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 3 Dołączył: 12.03.2011 Skąd: Opole Ostrzeżenie: (0%) |
No i jest problem ...
Uruchamiam session_regenerate_id(true) w skrypcie wykorzystujacym CI i serwer przestaje odpowiadać .. HELP @wNogachSpisz to że mechanizm jest odseparowany od natywnego to dobrze , ale ciastka jako magazyn danych? Mieszać do tego bazę nie wiem czy jest sens,mało to wydajne i z tego co mówisz zabugowane , co zaraz sprawdzę. Obsługa sesji z użyciem bazy danych działa poprawnie , w ciastku są tylko dane potrzebne do identyfikacji a w bazie są zapisywane właściwe dane sesyjne.Ale i tak bym wolał użyć katalogu jako magazynu, więc jak ktoś ma pomysł jak naprawić używanie session_regenerate_id(true) wraz z CI to bardzo proszę o info. Ten post edytował acidm 10.03.2013, 11:07:32 |
|
|
10.03.2013, 12:52:22
Post
#15
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) |
Obsługa sesji z użyciem bazy danych działa poprawnie , w ciastku są tylko dane potrzebne do identyfikacji a w bazie są zapisywane właściwe dane sesyjne. Nie prawda, dane lądują zarówno w sesji jak w cookie, sprawdź dokładnie. @wNogachSpisz to że mechanizm jest odseparowany od natywnego to dobrze , ale ciastka jako magazyn danych? W czym problem? Najwydajniejszy sposób przechowywania session data to właśnie cookie. Potrzebujesz ukryć dane? Włącz szyfrowanie. Ten post edytował wNogachSpisz 10.03.2013, 12:57:11 |
|
|
10.03.2013, 16:24:18
Post
#16
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 3 Dołączył: 12.03.2011 Skąd: Opole Ostrzeżenie: (0%) |
Nie prawda, dane lądują zarówno w sesji jak w cookie, sprawdź dokładnie. Prawda ,prawda sam sobie sprawdź ,po ustawieniu w configu na użycie bazy danych w sesjach do ciastka leci tylko te dane które CI może wykorzystać w celu autoryzacji sesji : ip_adress,user_agent,last_activity,session_id Pozostałe dane leca do bazy Żeby nie było: Plik config(część odpowiedzialna za sesje)
Kod nr 1:
Wartość ciastka : Kod a%3A4%3A%7Bs%3A10%3A%22session_id%22%3Bs%3A32%3A%22aa33f0fb3035e95b496bddda8c8d74d8%22%3Bs%3A10%3A%22ip_address%22%3Bs%3A9%3A%22127.0.0.1%22%3Bs%3A10%3A%22user_agent%22%3Bs%3A72%3A%22Mozilla%2F5.0+%28Windows+NT+6.1%3B+WOW64%3B+rv%3A19.0%29+Gecko%2F20100101+Firefox%2F19.0%22%3Bs%3A13%3A%22last_activity%22%3Bi%3A1362927846%3B%7D95b76a69a20e9afafcc5b9c6642e123d Kod nr 2:
Wartość ciastka : Kod a%3A4%3A%7Bs%3A10%3A%22session_id%22%3Bs%3A32%3A%221783399591723401246086d83a1931f8%22%3Bs%3A10%3A%22ip_address%22%3Bs%3A9%3A%22127.0.0.1%22%3Bs%3A10%3A%22user_agent%22%3Bs%3A72%3A%22Mozilla%2F5.0+%28Windows+NT+6.1%3B+WOW64%3B+rv%3A19.0%29+Gecko%2F20100101+Firefox%2F19.0%22%3Bs%3A13%3A%22last_activity%22%3Bi%3A1362928789%3B%7D30e96ae5df96d15a14d872f72dc17c6c A co mam do ciastek To że nie powinny służyć jako magazyn danych sesyjnych (użytkownika) ,nawet jeśli te dane mają być zaszyfrowane. Nie jest to bezpieczne i praktyczne, szyfrowanie tych danych zajmuje miejsce a tego w ciastku nie ma zbyt wiele. Ten post edytował acidm 10.03.2013, 16:30:53 |
|
|
10.03.2013, 17:27:06
Post
#17
|
|
Grupa: Zarejestrowani Postów: 148 Pomógł: 14 Dołączył: 23.02.2013 Ostrzeżenie: (0%) |
Istnieje także biblioteka wspierająca natywne sesje w CI. Nazywa się Native Session i można ją znaleźć tu: https://github.com/EllisLab/CodeIgniter/wiki/Native-session. Wystarczy wrzucić do bibliotek w aplikacji i działa.
-------------------- |
|
|
10.03.2013, 17:34:44
Post
#18
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) |
@acidm
Którą masz wersję CI? |
|
|
10.03.2013, 17:50:36
Post
#19
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 3 Dołączył: 12.03.2011 Skąd: Opole Ostrzeżenie: (0%) |
@wNogachSpisz 2.1.3
@Lion już sprawdzam PS nie wie ktoś jak zmienić ustawienia sesji w CI ale tylko na czas działania skryptu ? Próbowałem tak:
ale to nic nie dało |
|
|
10.03.2013, 17:55:01
Post
#20
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) |
PS nie wie ktoś jak zmienić ustawienia sesji w CI ale tylko na czas działania skryptu ? Stwórz własny config, np. o nazwie "my_config.php" napisz w nim ustawienia dla sesji zapisz plik w katalogu "/application/config/", nastepnie otwórz plik "/application/config/autoload.php" i dorzuc automatyczne ladowanie pliku "my_config". Alternawynie możesz napisać własny kontroler "core/my_controller.php" i tam w construktorze ładować plik config. Alternatywnie możesz też ustawić tzw. hook systemowy "/application/hooks", czyli coś w rodzaju eventu i ładować swoj plik config np. podczas zdarzenia "pre_controller". Coś jeszcze chcesz wiedziec o CodeIgniterze? Ten post edytował wNogachSpisz 10.03.2013, 17:58:24 |
|
|
Wersja Lo-Fi | Aktualny czas: 28.03.2024 - 16:45 |