Mam stronę internetową, która używa uwierzytelniania formularzy i członkostwa. Użytkownik musi mieć włączoną obsługę plików cookie w celu korzystania z witryny. Poproszono mnie o zmianę kodu, tak aby identyfikator sesji został zmieniony, gdy tylko użytkownik się zaloguje. Prawdopodobnie będzie to chronić przed atakiem z Session Fixation (http://en.wikipedia.org/wiki/Session_fixation). Czy ktoś wie, w jaki sposób mogę zmienić identyfikator sesji bez utraty całej sesji? PHP ma określoną metodę, ale nie mogę znaleźć odpowiednika .NET.jak zmienić identyfikator sesji po zalogowaniu w asp.net
Odpowiedz
Here's a blog post, który mówi o tym:
ASP.NET nie obsługuje bezpośrednio funkcjonalność zregenerować sesji ID. Zobacz dokumentację dotyczącą problemu here. Istnieje not-so quick and dirty way do wykonania przez ustawienie wartości
ASPNET_SessionID
na pusty łańcuch i przekierowanie tak, aby wartość była odnawiana.
Odpowiedziałem na podobne pytanie pod adresem Generating a new ASP.NET session in the current HTTPContext. Zasadniczo musimy zmienić niektóre z wewnętrznych stanów SessionStateModule, aby móc ponownie wygenerować identyfikator sesji bez utraty obiektów w sesji. Użyłem odbicia, aby ustawić wartość pola _rqId na nowy ID i _rqSessionStateNotFound na wartość true. Wadą jest to, że musimy udzielić "Pełnego Zaufania" do Aplikacji.
[Zaakceptowana odpowiedź] (http://stackoverflow.com/a/1419508/295686) odwołuje się do artykułu skierowanego do .NET 1.1 (i tak naprawdę nie zajmuje się naprawą sesji, tylko ponowne używanie starego identyfikatora sesji), ale to Rozwiązanie było bardziej eleganckie i działało w naszej aplikacji .NET 4.5 (jedna strona MVC i jedna strona Web Forms). – mlhDev
Jest to bardzo stare pytanie mam wskrzeszenia, ale tutaj jest rozwiązanie:
var manager = new SessionIDManager();
bool redirected, isAdded;
manager.SaveSessionID(System.Web.HttpContext.Current,
"5vonjb4mtb1of2fxvhjvkh5d", out redirected, out isAdded);
// sessionId now equals "5vonjb4mtb1of2fxvhjvkh5d"
var sessionId = Session.SessionID;
Wiem, minęło trochę czasu. Ale wypróbowaliśmy twój kod i nie działa on dla nas. sessionId nie jest równe "5vonjb4mtb1of2fxvhjvkh5d". – mosquito87
Zrobiłem to z sukcesem. sessionid zmienia się na nowy sessionid. – pinopino
To zbliżyło nas, ale nie wystarczająco blisko - wciąż nad nim pracujemy. Dzięki temu zaktualizujesz identyfikator sesji i odeślesz aktualizację plików cookie, tak jak byś tego oczekiwał, ale nadal chcielibyśmy użyć tej sesji podczas tego samego żądania. Nie jesteśmy w stanie zrobić tego teraz - wydaje się, że torba sesyjna jest poprzednią; następne żądanie widzi nową torbę sesji, ale naszych wartości nie ma. – mlhDev
- 1. Uzyskaj identyfikator sesji w ASP.Net
- 2. codeIgniter: utrata danych sesji po zalogowaniu
- 3. Jak ustawić limit czasu sesji po zalogowaniu się w passportjs?
- 4. Przekierowanie po zalogowaniu: Web.config
- 5. Flask - Jak uzyskać identyfikator sesji
- 6. Uruchom kod po zalogowaniu openID connect w Asp.net Core
- 7. Unikalny identyfikator sesji w pythonie
- 8. Jak zaszyfrować identyfikator sesji w pliku cookie?
- 9. Przekierowanie Angular2 po zalogowaniu
- 10. Członkostwo ASP.NET Logowanie przekierowujące do nieautoryzowanego po zalogowaniu użytkownika
- 11. W jaki sposób jest generowany identyfikator sesji?
- 12. Asp.net MVC 6 get użytkownik twierdzi, natychmiast po zalogowaniu
- 13. Jak wrócić do strony odsyłający w CakePHP po zalogowaniu
- 14. jak sprawdzić mój bieżący identyfikator użytkownika w innym kontrolerze stron po zalogowaniu?
- 15. W ASP.Net, Czy mogę dowiedzieć się, czy inna sesja istnieje lub jest ważna przez identyfikator sesji?
- 16. Jak zmienić nazwę sesji R w ESS?
- 17. Jak pobierać strony przekierowujące po zalogowaniu?
- 18. Authlogic uzyskujący identyfikator użytkownika w obiekcie sesji
- 19. Limit czasu sesji w ASP.NET
- 20. Jak ustawić stronę dostępną tylko po zalogowaniu?
- 21. Jak zachować ten sam identyfikator sesji w wielu aplikacjach internetowych w ASP.NET
- 22. Symfony3 Przechowywanie lokalizacji po zalogowaniu
- 23. Stan sesji ASP.NET MVC
- 24. Przekierowanie zabezpieczeń wiosennych po zalogowaniu
- 25. Wydajność sesji ASP.NET
- 26. Ustaw identyfikator klienta w asp.net
- 27. Jak Symfony2 przekierowanie do żądanej strony po zalogowaniu
- 28. Limit czasu sesji w ASP.NET
- 29. Uzyskiwanie identyfikatora Current ID z Websecurity bezpośrednio po zalogowaniu (C#/ASP.NET)
- 30. Jak przekierować po zalogowaniu się użytkownika lub po prostu wylogowaniu
ja aslo o tym myśleć, ale po regeneratu, że cały obiekt w obiekcie sesji straci ... – MemoryLeak
blog, do którego prowadzisz link, nie jest już dostępny. –