Czy, jak, kiedy i po co używacie session_name()?

1

Zainspirowany tym wątkiem: Logowanie nie przekierowuje jeśli nadam nazwę sesji a zwłaszcza dwoma wpisami (screeny poniżej) rzucam hasło do dyskusji:

Czy realnie używacie w swoich projektach tej funkcji? Po co to robicie? Czy nie jest to przerost formy nad treścią? Czemu tak robicie - narzucone odgórnie/kwestie kompatybilności z czymś, a może własna wola? Co taka zmiana nazwy, poza poczuciem bycia pro-coderem daje?

screenshot-20240411114731.png

2

Nie używam, chyba że robi to za mnie framework.

0

Ta funkcja ustawia nazwę cookie'sa w którym siedzi token sesji.

Więc pytanie nie powinno brzmieć (edit per @jurek1980) Więc moim zdaniem zasadniej byłoby zadać inne pytanie, mianowicie zamiast: "czy używacie session_name()?", raczej "jak w waszych programach nazywa się cookie który trzyma token sesji?". Można wziąć albo domyślny który daje język/libka, albo ustalić własny. Nie ma to specjalnego wpływu na działanie aplikacji, jedynie można to podglądnąć w narzędziach developerskich.

W PHP jeśli się nie użyje session_name(), to domyślnie cookie będzie się nazywał PHPSESSID.

1

@Riddle tak, wiem co robi ta funkcja. I właśnie zastanawiam się, jakie są realne przykłady/sytuacje, w których warto/dobrze/sensownie jest z niej skorzystać i zmienić domyślną nazwę/prefix ciasteczka.

Sam napisałeś w podlinkowanym wątku, że na 99% osoba pytająca nie będzie miała potrzeby skorzystania z tej opcji/możliwości. I ja się zastanawiam, jakie scenariusze się kryją w tym pozostałym jednym procencie.

1
cerrato napisał(a):

@Riddle tak, wiem co robi ta funkcja. I właśnie zastanawiam się, jakie są realne przykłady/sytuacje, w których warto/dobrze/sensownie jest z niej skorzystać i zmienić domyślną nazwę/prefix ciasteczka.

Sam napisałeś w podlinkowanym wątku, że na 99% osoba pytająca nie będzie miała potrzeby skorzystania z tej opcji/możliwości. I ja się zastanawiam, jakie scenariusze się kryją w tym pozostałym jednym procencie.

session_name() to po prostu część interfejsu funkcji do sesji w PHP - arbitralny wybór. Ten interfejs równie dobrze móglby wyglądać np session_start(name:'my-app');

Poza tym, weźmy pod uwagę że sesje w PHP to nie jest jakieś nie wiadomo co skomplikowanego, tak na prawdę cały ten system jedyne co robi to ustawia cookie'sa, i zapamiętuje hashmapę na dysku nic więcej - z łatwością możnaby coś takiego napisać samemu, i ktoś piszący samemu też musiałby podjąć arbitralny wybór w jakim cookiesie zapisać token sesji. Podobna akcja dzieje się jak ludzie piszą tokeny CSRF, też muszą je w jakimś polu wsadzić, i nazwę tego pola też wybieramy arbitralnie.

@cerrato Natomiast czemu ktoś miałby chcieć zmienić nazwę tego ciastka na inne niż domyślne:

  • żeby nie pokazać użytkownikom aplikacji z jakiego systemu sesji korzysta (chociaż to też nie do końca, bo mogę skorzystać z zupełnie innej sesji, a i tak nazwać cookie PHPSESSID), np żeby się ustrzec przed atakami?
  • żeby połechtać swoje OCD

I chyba w sumie tyle. Pod względem tego jak aplikacja działa, to i tak nic nie zmieni.

1

Jedna rzecz mi się kolacze po głowie. Jeśli ktoś widzi nazwę typu PHPSSID czy nie wiem Wordpress to może tego użyć jako preselekcji. Jeśli będzie jakaś podatność to można to próbować wykorzystać.
BTW.
kojarzę że tam były dość duże obostrzenia co do nazwy sesji i działy się różne cuda jak się tą nazwę, źle ustawiło.

0

Funkcja zmienia nazwę pliku Cookie a ten fakt można wykorzystać.
Można np. w jednej instancji przeglądarki na różnych zakładkach być zalogowanym np. do różnych kont tej samej aplikacji.
A to już całkiem praktyczna rzecz.
Marny sposób ale od biedy...

0

Można np. w jednej instancji przeglądarki na różnych zakładkach być zalogowanym np. do różnych kont tej samej aplikacji.

No jakoś tego nie czaję - przecież i tak sesja jakoś będzie się nazywać, więc czy będzie to domyślne PHPSESSID czy MojaSeSSSSja to niczego chyba nie zmieni.

żeby połechtać swoje OCD

@Riddle no właśnie też to jest główny powód, który mi przychodzi do głowy - żeby było bardziej pro ;)

kojarzę że tam były dość duże obostrzenia co do nazwy sesji i działy się różne cuda jak się tą nazwę, źle ustawiło.

Tak, coś tam było - że musi być przynajmniej jedna litera, kropki zamienia na podkreślenia i coś jeszcze.

1
cerrato napisał(a):

Można np. w jednej instancji przeglądarki na różnych zakładkach być zalogowanym np. do różnych kont tej samej aplikacji.

No jakoś tego nie czaję - przecież i tak sesja jakoś będzie się nazywać, więc czy będzie to domyślne PHPSESSID czy MojaSeSSSSja to niczego chyba nie zmieni.

No teoretycznie dałoby się to osiągnąć (i osiągnąć różne sesje na różnych kartach), ale mogę sobie wyobrazić dużo lepsze sposoby na to niż inne klucze sesji. Np. jeden klucz sesji, a w samej sesji mogłoby być pole które sugeruje na jakim koncie jesteśmy.

Chyba że ktoś faktycznie chciałby całkowicie odseparowane konta, tylko wtedy chyba lepiej byłoby się zalogować na incognito.

Wszystko zależy od use-case'u.

2

Wydaje mi się że warto użyć żeby nie przyznawać się do używania PHP.
A całkiem poważnie to czasem ukrywa się z czego korzysta aplikacja żeby nie dostarczać informacji atakującym script kiddie.
Może się teoretycznie przydać przy developmencie - jeśli jednego dnia pracujemy przy jednej apce a drugiego przy drugiej, obie wystawiamy na localhost i mamy długotrwałe, permanentne sesje to bez zmiany nazw będzie się trzeba ciągle logować
Można też mieć dzięki temu dwie sesje w jednej domenie - część podstron może korzystać z jednej a część z drugiej, ale nie wiem czy to realny use case.

Ja bym zmienił przez moje OCD bo to żaden problem a PHPSESSID brzydko wygląda.

3

Aż pogooglalem, i wg odpowiedzi na SO to używa się wtedy kiedy np w ramach jednej domeny używamy dwie aplikacje i nie chcemy współdzielenia sesji, czyli w ramach jednej domeny masz forum i bloga. Ma to sens.
https://stackoverflow.com/questions/7551404/php-what-is-the-purpose-of-session-name

1 użytkowników online, w tym zalogowanych: 0, gości: 1