User.Identity.Name有多强?

时间:2009-05-12 15:21:11

标签: asp.net-mvc ntlm

我正在编写一个使用NTLM身份验证的ASP.Net MVC应用程序,因此用户无需注册该站点。如果我禁用匿名访问,我可以使用User.Identity.Name作为数据库中的所有权密钥。我想做的是能够发出诸如

之类的搜索
from station in db.stations where station.user == username select *;

这是否足以可靠地知道用户是谁,或者某些讨厌的用户是否可以欺骗名称字符串并获取他们不应该访问的数据?

1 个答案:

答案 0 :(得分:4)

该名称从会话中填写,因此攻击者必须欺骗会话cookie以劫持用户的会话并获取访问权限。 ASP.NET会话cookie已加密以帮助防止这种情况,但您绝对应该让会话过期,以便确定的攻击者无法花费无限的时间来尝试破解加密。将cookie设置为httpOnly还可以帮助防止浏览器中的恶意脚本访问cookie。

这是保护ASP.NET 2.0网站的最佳实践的reference。其中大部分仍然适用,但可能需要翻译成MVC。