我正在 dotnet 中做基于网络的项目。目前我正在使用 session 变量来实现安全性。我将当前用户 ID 和用户类型保留在 session 中,并通过这些 session 变量对用户进行身份验证(例如 Session["UserId"]、Session["UserName"] 和 Session["UserType"])。
请帮助我理解这为什么会不安全。我听说这种安全性可能会被破坏,并且应用程序很容易被黑客攻击,例如可以获取 session ID 并直接连接到该 session ID 等。
请指导我。
最佳答案
在底层,标准 ASP.NET 表单例份验证的工作方式基本上与您所描述的方式相同。这种不安全感主要来自于这样一个事实:您本质上是在告诉 ASP.NET“嘿,别担心……我会处理这件事。”通过接管安全问题,你正在部署用来吊死自己的绳子(*)。微软在ASP.NET框架上投入了多年的人力,并且拥有相当强大的内置安全系统。你应该使用它。
Aristos 找错了方向...如果有人可以从您的用户/站点窃取“一个简单的 cookie”,那么他们也可以破坏 ASP.NET 的默认安全模型。虽然这绝对是一个问题,但这并不是真正的问题。
*例如,假设您创建一个名为 MySecurePage 的“安全”Page 对象,该对象始终在执行代码之前检查用户是否已登录并经过验证。好吧,有一天,开发人员 Joe 忘记使用 MySecurePage,而是使用 Page。哎呀,您刚刚消除了此页面上的所有安全措施。这是一个简单的示例,但希望您了解有多少种不同的方法可以搞砸这个。
关于asp.net - 使用 session 变量实现安全性,它是如何不安全的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2770848/