asp.net - 使用 session 变量实现安全性,它是如何不安全的

标签 asp.net web-applications webforms

我正在 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/

相关文章:

c# - Linq 到实体

javascript - 轮询工作多长时间

jsp - Java EE 还是普通的 Web 应用程序?

asp.net - 通过 jQuery 加载 ascx

c# - 如何使用超时进行 try-catch?

asp.net - 在 Razor View 中渲染 Telerik MVC Grid 时出现问题

python - 基于 python 的 webapp 中的并发处理

java - 具有良好音频支持的网络应用程序客户端框架

WebForms 404 中的 ASP.NET Web API

asp.net - .NET Framework 等效于 IApplicationBuilder.UseForwardedHeaders()