我正在使用dotnet进行基于Web的项目。目前我正在使用会话变量实现安全性。我在会话中保留当前用户ID和用户类型,并从这些会话变量(例如Session [“UserId”],Session [“UserName”]和Session [“UserType”])验证用户。
请帮助我理解这可能是不安全的。我听说这种安全性可以被打破,应用程序可以很容易被黑客攻击,就像可以获得会话ID并直接连接到该会话ID等。
请指导我。
答案 0 :(得分:3)
在幕后,标准的ASP.NET Forms身份验证基本上与您描述的方式相同。不安全感主要来自于你基本上告诉ASP.NET“嘿,别担心......我会处理这个问题。”通过接管安全问题,你正在部署绳索,你将自己挂起(*)。 Microsoft已经将多年的人力资源投入到ASP.NET框架中,并且它具有相当强大的内置安全系统。你应该使用它。
Aristos正在咆哮错误的树...如果有人可以从你的用户/网站窃取“一个简单的cookie”,那么他们也可以打破ASP.NET的默认安全模型。虽然这绝对是一个问题,但这不是真正的问题。
*例如,假设您创建一个名为MySecurePage的“安全”页面对象,它始终在执行代码之前检查用户是否已登录并验证。好吧,有一天,Developer Joe会忘记使用MySecurePage并使用Page。哎呀,你刚刚在这个页面上消除了所有的安全性。这是一个简单的例子,但希望你能够了解有多少不同的方法可以解决这个问题。