Z tego co rozumiem, przy korzystaniu z ServiceStack's Authentication zwykle uwierzytelnisz się na początku sesji, a następnie oznaczysz sesję po stronie serwera jako uwierzytelnioną. Kolejne żądania usługi internetowej będą używać tego identyfikatora sesji i nie będą wymagały ponownego uwierzytelniania. (Proszę mnie poprawić, jeśli się mylę).Czy identyfikatory sesji usługi ServiceStack są wystarczająco bezpieczne?
Generowanie nowych identyfikatorów sesji jest wykonywane przy użyciu Guid.NewGuid() w SessionExtensions.cs, które doesn't generate cryptographically fantastic values. Czy jest jakikolwiek powód, aby nie przełączać się na używanie kryptograficznie bezpiecznych wartości, np. używając RNGCryptoServiceProvider?
UPDATE:
Właściwie po myślenia o nim nieco dalej, ASP.NET nie używa jej identyfikator sesji, aby potwierdzić, że żądający jest uwierzytelniona. Korzysta z formularza FormsAuthenticationTicket, który został zaszyfrowany kluczem komputera i zaszyfrowany (here's a nice description procesu dla programu ASP.NET 2.0).
Nie jestem facetem bezpieczeństwa, więc nie wiem, co to oznacza, jeśli porównasz poziom zabezpieczeń zapewniany przez ASP.NET Forms Auth z wartością losową. Przypuszczam, że wszystko sprowadza się do klucza i długości danych ... ale również czas wymagany do zamontowania ataku brute-force na Forms Authentication jest prawdopodobnie znacznie wyższy, ponieważ nie wymaga on po prostu próbowania całej liczby losowych liczb?
Po prostu zdałem sobie sprawę, że ASP.NET nie używa identyfikatorów SessionIds do uwierzytelniania, ale raczej zaszyfrowanych i zakodowanych formularzy FormsAuthenticationTickets. Wszelkie przemyślenia na temat porównania bezpieczeństwa? Nie chcąc być bólem, ale jest to dla nas ważne, aby móc wygodnie wybrać tę strukturę. – Rory
Najszybszym sposobem na zrobienie czegoś jest wysłanie prośby o pobranie. W przeciwnym razie będzie musiało poczekać, aż będziemy mieli wolny czas, aby to zrobić. Przyjrzę się temu przed wydaniem tego weekendu (v3.9.38 +) - ale bez obietnic. – mythz
FYI v3.9.38 + z ServiceStack został zaktualizowany do używania RNGCryptoServiceProvider, jak widać [w tym zatwierdzeniu] (https://github.com/ServiceStack/ServiceStack/commit/4235f0b11ff6ee9a6f49c49edacb4363684291e2) – mythz