簡體   English   中英

“User.Identity.Name”安全嗎?

[英]Is “User.Identity.Name” safe?

我想知道我是否可以使用User.Identity.Name來查詢我的數據庫中的數據。
例如:

UsersBLL.GetPersonalInformation(string username)

User.Identity.Name的值傳遞給此方法是個好主意嗎?
User.Identity.Name的值是否可以被劫持?

User.Identity.Name與任何其他方法一樣安全。 有可能劫持它嗎? 也許,如果您沒有使用ssl並且您沒有加密您的身份驗證機制,但如果您使用SSL並使用加密的FormsAuthentication或Windows身份驗證,那么您應該沒問題。

基本上,如果您遵循良好的安全措施,它應該是非常安全的。 至少不比任何其他識別用戶的方式安全。

編輯:

這假設您不是在用戶名上鍵入表,而是用Membership userid鍵,而您的代碼只是按名稱查找成員資格表中的用戶ID。

如果您在用戶名上鍵入表格,則需要考慮許多安全問題。 其中一個是Henk在他的回答中提到的。 如果您不允許更改或重用用戶名,那么這不是問題。

它會被劫持嗎? 是的,例如通過會話劫持由於傳輸層保護不足 (該鏈接中的工作示例)但這不是成員資格提供程序實現本身的風險。

我沒有傳遞用戶名,而是堅持使用ID:

var user = Membership.GetUser();
var userId = (Guid?)user.ProviderUserKey;

我假設依賴於aspnet_Users用戶表的任何表(假設,您再次使用默認成員資格提供程序),使用ID作為外鍵而不是用戶名。 至少我希望是這樣的!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM