2

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

from station in db.stations where station.user == username select *;

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

4

1 回答 1

4

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

这是保护 ASP.NET 2.0 网站的最佳实践的参考。其中大部分仍然适用,但可能需要转换为 MVC。

于 2009-05-12T15:40:55.720 回答