![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam do rozwiązania pewien problem, krótko opiszę o co chodzi: - mam 3 serwisy pod 3 różnymi domenami: s1.pl, s2.pl, s3.pl - czas zalogowania na różnych serwisach ma być różny (np. 6h, 12h, 1h - dwa serwisy z newsami i jeden aukcyjny) - wszystkie serwisy stoją na jednym serwerze, na tym samym koncie (nawet pliki silnika są te same, ale to chyba żadna różnica) - serwisy korzystają z jednej bazy danych, ale pobierają po prostu różne informacje - system logowania każdego serwisu na sesjach (id sesji w cookies) - systemy będą do siebie wzajemnie linkowały (np. przekazując w ten sposób id sesji) Problem: jak zrobić, żeby zalogowanie na jednym z serwisów logowało na pozostałe? - system sesji PHP zapisuje dane na plikach, czyli teoretycznie przekazanie id sesji w linku załatwiłoby sprawę? Czy istnieje jeszcze podział sesji na domeny? (konto hostingowe jest to samo) - cookies są niezależne dla każdej domeny, to oczywiste Mój pomysł: (np. linkujemy s1 -> s2) - przekazywanie w linku id sesji - na s2 robimy session_regenerate_id() (ew. kopiujemy dane zapisane w sesji) i ustawiamy inny czas życia sesji (wymóg) - dzięki temu ustawią się niezależne cookies dla każdego serwisu - id sesji muszą być zapisane w bazie (taki kolejny wymóg), więc z wylogowaniem ze wszystkich serwisów jednocześnie też nie będzie problemu Moje pytanie brzmi: - jak to się ma do bezpieczeństwa? - czy moje myślenie dąży w dobrą stronę? - czy w ogóle jest to wykonalne biorąc pod uwagę kwestie zabezpieczeń serwera/przeglądarek? Z góry dzięki za wszystkie sugestie. Ten post edytował sowiq 13.02.2009, 12:36:26 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Czym w takim razie wg. Ciebie taki generowany token będzie się różnił od SID'a? Tym, że za każdym żądaniem jest on inny? (może być wykorzystany tylko raz) Można by to było zrealizować w mniej więcej ten sposób: Logując się na jednej stronie wstawiasz do bazy token (np. tabela memory z połączonym SID-em). Skrypty logujące do innych domen są wywoływane jak obrazki (AJAX nie wchodzi w rachubę ze względu na ograniczenia). I teraz sytuacja ma się następująco: Kod <img src="http://server1.pl/signin.php?sid=d97h78d87g6b876d&token=873982384" /> <img src="http://server1.pl/signin.php?sid=d97h78d87g6b876d&token=873982384" /> Jeśli token się zgadza, signin.php ustawia ciasteczko, user jest zalogowany. Jeśli się nie zgadza - nie robi nic/generuje inny SID. Oczywiście, wszystkie domeny korzystają z tej samej tabeli z tokenami, GC zrealizujesz sobie już chyba sam. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 05:07 |