Zacząłem używać PHP kilka miesięcy temu. W celu stworzenia systemu logowania do mojej strony internetowej czytam o ciasteczkach i sesjach oraz ich różnicach (ciasteczka są przechowywane w przeglądarce użytkownika i sesjach na serwerze). W tym czasie wolałem pliki cookie (a kto nie lubi ciasteczek ?!) i po prostu powiedziałem: „kogo to obchodzi? Nie mam nic dobrego do przechowywania ich na moim serwerze”, więc zacząłem używać plików cookie do mój projekt licencjacki. Jednak po zrobieniu dużej części mojej aplikacji usłyszałem, że w konkretnym przypadku przechowywania identyfikatora użytkownika sesje są bardziej odpowiednie. Zacząłem więc myśleć o tym, co powiedziałbym, gdyby jury zapytało mnie, dlaczego użyliście ciasteczek zamiast sesji? Mam właśnie ten powód (że nie muszę przechowywać wewnętrznych informacji o użytkowniku).? czy to coś więcej?
Czy możesz mi powiedzieć o zaletach / wadach używania plików cookie do przechowywania identyfikatora użytkownika?
Dziękujemy za wszystko w StackOverflow!
Odpowiedzi:
Koncepcja polega na przechowywaniu trwałych danych podczas ładowania strony dla użytkownika sieci. Pliki cookie przechowują go bezpośrednio na kliencie. Sesje wykorzystują pliki cookie jako swego rodzaju klucz do powiązania z danymi przechowywanymi po stronie serwera.
Preferowane jest używanie sesji, ponieważ rzeczywiste wartości są ukryte przed klientem, a użytkownik kontroluje, kiedy dane wygasają i stają się nieprawidłowe. Gdyby wszystko opierało się na plikach cookie, użytkownik (lub haker) mógłby manipulować danymi dotyczącymi plików cookie, a następnie odtwarzać żądania w witrynie.
Edycja: Nie sądzę, że korzystanie z plików cookie ma inną zaletę niż prostota. Spójrz na to w ten sposób ... Czy użytkownik ma powód, aby znać swój identyfikator #? Zazwyczaj powiedziałbym „nie”, użytkownik nie potrzebuje tych informacji. Udzielanie informacji powinno być ograniczone w zależności od potrzeby. Co się stanie, jeśli użytkownik zmieni swój plik cookie na inny identyfikator, jak zareaguje Twoja aplikacja? To ryzyko bezpieczeństwa.
Zanim sesje stały się modne, w zasadzie miałem własną implementację. Przechowałem unikalną wartość pliku cookie na kliencie i moje trwałe dane w bazie danych wraz z tą wartością pliku cookie. Następnie na żądanie strony dopasowałem te wartości i miałem moje trwałe dane, nie pozwalając klientowi kontrolować, co to jest.
źródło
session_write_close();
gdy jej potrzebujesz. Utworzenie własnego unikalnego identyfikatora i dopasowanie do zwykłych plików cookie nie było trudne i sprawia, że wszystkie strony są ładne i szybkie.Podstawowe pomysły na rozróżnienie tych dwóch.
Sesja:
Ciasteczka:
Sesja jest preferowana, gdy konieczne jest przechowywanie krótkoterminowych informacji / wartości, takich jak zmienne do obliczeń, pomiarów, zapytań itp.
Pliki cookie są preferowane, gdy trzeba przechowywać długoterminowe informacje / wartości, takie jak konto użytkownika (aby nawet po zamknięciu komputera na 2 dni jego konto nadal będzie zalogowane). Nie mogę wymyślić wielu przykładów plików cookie, ponieważ nie są one stosowane w większości sytuacji.
źródło
To jest główna różnica w twoim wyborze,
Jeśli chcesz, aby identyfikator był zapamiętywany przez długi czas, musisz użyć plików cookie; w przeciwnym razie, jeśli chcesz, aby witryna rozpoznała użytkownika tylko podczas tej wizyty, sesje są właściwym rozwiązaniem.
Sesje są przechowywane w pliku wygenerowanym przez serwer php. Aby zapamiętać, który plik jest dla którego użytkownika, php ustawi również plik cookie w przeglądarce użytkownika, który przechowuje ten identyfikator pliku sesji, więc podczas następnej wizyty php przeczyta ten plik i przeładuje sesję.
Teraz php domyślnie czyści sesje co interwał, a także konwencja nazewnictwa sesji powoduje, że wygasa automatycznie. Ponadto przeglądarki nie zachowują pliku cookie, który przechowuje identyfikator sesji po zamknięciu przeglądarki lub wyczyszczeniu historii.
Ważne jest, aby pamiętać, że obecnie przeglądarki obsługują także inny rodzaj silników pamięci, takich jak LocalStorage, SessionStorage i inne silniki webdb, których kod javascript może używać do zapisywania danych na twoim komputerze, aby cię zapamiętać. Jeśli na przykład otworzysz konsolę javascript na Facebooku i wpiszesz „localStorage”, zobaczysz wszystkie zmienne, których Facebook używa do zapamiętywania cię bez plików cookie.
źródło
zapisując #ID jako plik cookie w celu rozpoznania zalogowanych użytkowników, w rzeczywistości wyświetlasz dane użytkownikom, którzy nie są z nimi powiązani. Ponadto, jeśli strona trzecia spróbuje ustawić losowe identyfikatory jako dane cookie w swojej przeglądarce, będzie w stanie przekonać serwer, że jest użytkownikiem, podczas gdy tak naprawdę nie jest. To brak bezpieczeństwa.
Użyłeś plików cookie i jak powiedziałeś, ukończyłeś już większość projektu. poza tym ciasteczko ma przywilej pozostawania przez długi czas, podczas gdy sesje kończą się szybciej. Dlatego sesje nie są odpowiednie w tym przypadku. W rzeczywistości wiele znanych i popularnych stron internetowych i usług korzysta z plików cookie i możesz pozostać zalogowany przez długi czas. Ale jak wykorzystać ich metodę, aby stworzyć bezpieczniejszy proces logowania?
oto pomysł: możesz pomóc w sposobie korzystania z plików cookie: jeśli używasz losowych kluczy zamiast identyfikatorów do rozpoznania zalogowanych użytkowników, po pierwsze, nie ujawniasz swoich podstawowych danych losowym użytkownikom, a po drugie, jeśli uważasz, że losowe klucz wystarczająco duży, Trudno będzie odgadnąć klucz lub utworzyć losowy. na przykład możesz zapisać klucz o długości 40, taki jak ten w przeglądarce użytkownika: „KUYTYRFU7987gJHFJ543JHBJHCF5645UYTUYJH54657jguthfn”, a prawdopodobieństwo, że ktoś utworzy dokładny klucz i będzie udawać, że jest kimś innym, będzie mniejsze.
źródło
Krótka odpowiedź
Reguły uporządkowane według priorytetu:
Źródło: https://www.lucidar.me/en/web-dev/sessions-or-cookies/
Szczegółowa odpowiedź
Ciasteczka
Sesje
Właściwy wybór
Sesje używają plików cookie! Dane sesji są przechowywane po stronie serwera, ale identyfikator UID jest przechowywany po stronie klienta w pliku cookie. Pozwala serwerowi dopasować danego użytkownika do odpowiednich danych sesji. UID jest chroniony i trudny do zhakowania, ale nie jest niezniszczalny. W przypadku wrażliwych działań (zmiana adresu e-mail lub resetowanie hasła) nie polegaj na sesjach ani na plikach cookie: poproś o hasło użytkownika, aby potwierdzić działanie.
Wrażliwe dane nigdy nie powinny być przechowywane w plikach cookie (wiadomości e-mail, szyfrowane hasła, dane osobowe ...). Pamiętaj, że dane są przechowywane na obcym komputerze, a jeśli komputer nie jest prywatny (komputery klasowe lub publiczne), ktoś inny może potencjalnie odczytać zawartość plików cookie.
Pamiętaj-me dane muszą być przechowywane w plikach cookie, w przeciwnym razie dane zostaną utracone, gdy użytkownik zamknie przeglądarkę. Nie zapisuj jednak hasła ani danych osobowych użytkownika w pliku cookie „pamiętaj o mnie”. Przechowuj dane użytkownika w bazie danych i połącz je z zaszyfrowaną parą identyfikatora / klucza przechowywanego w pliku cookie.
Po rozważeniu poprzednich rekomendacji ostatecznie pojawia się następujące pytanie, które pomaga wybrać między plikami cookie a sesjami:
Czy trwałe dane muszą pozostać, gdy użytkownik zamknie przeglądarkę?
źródło
W rzeczywistości sesja i pliki cookie nie zawsze są oddzielnymi rzeczami. Często sesja wykorzystuje pliki cookie.
Istnieje kilka dobrych odpowiedzi na twoje pytanie w tych innych pytaniach tutaj. Ponieważ twoje pytanie dotyczy konkretnie zapisania IDU (lub ID) użytkownika, nie sądzę, że jest to duplikat tych innych pytań, ale ich odpowiedzi powinny ci pomóc.
pliki cookie a sesja
Cache VS Session VS cookies?
Jaka jest różnica między sesją a plikiem cookie?
źródło
Osobiście używam zarówno plików cookie, jak i sesji.
Pliki cookie są używane tylko wtedy, gdy użytkownik kliknie pole wyboru „zapamiętaj mnie” . a także pliki cookie są szyfrowane, a dane tylko deszyfrowane na serwerze. Jeśli ktoś spróbuje edytować pliki cookie, nasz deszyfrator może go wykryć i odrzucić żądanie.
Widziałem tak wiele witryn, w których dane logowania są przechowywane w plikach cookie , każdy może po prostu zmienić identyfikator użytkownika i nazwę użytkownika w plikach cookie, aby uzyskać dostęp do dowolnego konta.
Dzięki,
źródło
Sesja i Cookie to nie to samo.
Sesja służy do przechowywania informacji ze stron internetowych. Zwykle strony internetowe nie mają żadnych pamięci do przechowywania tych informacji. Ale za pomocą możemy zapisać niezbędne informacje.
Ale Cookie służy do identyfikacji użytkowników. Za pomocą plików cookie możemy przechowywać dane. Jest to niewielka część danych, które będą przechowywane w przeglądarce internetowej użytkownika. Dlatego za każdym razem, gdy użytkownik przejdzie następnym razem, przeglądarka odeśle informacje o pliku cookie na serwer w celu uzyskania poprzednich działań.
Kredyty: sesja i pliki cookie
źródło
Sesje umożliwiają przechowywanie poszczególnych informacji, tak jak w przypadku plików cookie, ale dane są przechowywane na serwerze zamiast na kliencie.
źródło
Jak powiedzieli inni, sesje są sprytne i mają większą zaletę ukrywania informacji przed klientem.
Ale Cookie nadal ma co najmniej jedną zaletę , możesz uzyskać dostęp do plików cookie z Javascript (na przykład ngCookies ). W sesji PHP nie można uzyskać do niej dostępu poza skryptem PHP.
źródło
Wybiorę sesję, przede wszystkim sesja jest bezpieczniejsza niż pliki cookie, pliki cookie to dane strony klienta, a sesja to dane strony serwera. Pliki cookie służą do identyfikacji użytkownika, ponieważ są to małe fragmenty kodu wbudowane w mój serwer w przeglądarce komputera użytkownika. Z drugiej strony Sesja pomaga zabezpieczyć twoją tożsamość, ponieważ serwer WWW nie wie kim jesteś, ponieważ adres HTTP zmienia stan 192.168.0.1 na 765487cf34ert8ded… lub coś innego za pomocą metod GET i POST. Sesja przechowuje dane użytkownika w unikalnej sesji identyfikatora, której nawet identyfikator użytkownika nie może się ze sobą zgadzać. Sesja przechowuje informacje o jednym użytkowniku na wszystkich stronach jednej aplikacji. Pliki cookie wygasają za pomocą setcookies (), podczas gdy wygasanie sesji nie jest ustawione, wygasa, gdy użytkownik wyłączy przeglądarki.
źródło
Sesja to grupa informacji na serwerze, która jest powiązana z informacjami o plikach cookie. Jeśli używasz PHP, możesz sprawdzić sesję. zapisz _ lokalizację ścieżki i faktycznie „zobacz sesje”. Plik cookie to fragment danych wysyłanych i zwracanych od klientów. Pliki cookie są często używane w celu ułatwienia sesji, ponieważ informują serwer, który klient obsłużył daną sesję. Są na to inne sposoby (magia ciągu zapytań itp.), Ale najprawdopodobniej pliki cookie są do tego najczęściej używane.
źródło