2010-11-29 18 views
5

SetAuthCookie() kullanarak userId depolamak güvenli midir? FormsAuthentication.SetAuthCookie() kullanarak çerezde yalnızca UserId (veritabanında birincil anahtar) saklamak için güvenli olup olmadığını merak ediyordum ve kalıcı çerezYalnızca ASP.NET

Kullanıcıların kullanıcı adlarını kaydettikleri birçok örnek gördüm, ancak bu (userId) bir veya iki basamaklı sayı olabilir, bu da bunu daha kolay elde etmeyi sağlayabilir. Yani sorum benim yapmalı mıyım? Değilse, kullanıcı adını kaydettiğimde neden daha iyi olurdu?

cevap

4

Güvenli değil Bu değeri şifrelenmemiş olarak saklar ve daha sonra bu değeri çerezden okur ve sonraki isteklerde kullanıcının kimliğini doğrulamak için kullanır (kullanıcı adını kullanarak bu şekilde güvensiz olur).

Çerezdeki değeri değiştirmek önemsiz olduğundan ve kullanıcılar başka bir kullanıcının kimliğini alt edebileceği için güvenli değildir.

Kullanıcı Kimliği'ni FormsAuthenticationTicket.UserData ve encrypt the ticket'da saklıyorsanız, bu güvenlidir.

+9

Bu yanıt tamamen doğru değil. FormsAuth belirtecinin * tüm * içeriği, kullanıcı adı/kullanıcı kimliği de dahil olmak üzere şifrelenir ve imzalanır, böylece değiştirilemez. Kullanıcı adı yerine SetAuthCookie'ye parametre olarak kullanıcı kimliğinin iletilmesi, güvenlik özelliklerini, olumlu veya olumsuz olarak değiştirmez. – Levi

+2

Haklısınız; Soruyu hızlı bir şekilde okudum ve SetAuthCookie'yi kullanmayla ilgili özel referansı kaçırdım. –

0

İnsanların (o sesler tarafından) sadece kullanıcı kimliği ile çok yapabileceğini sanmıyorum (ki yine kısa bir ad olabilir) veya bir veritabanında birincil anahtarla