c# - 在 html 隐藏字段上保留 ASPNET_SessionId 值,是否存在安全问题?

标签 c# javascript jquery asp.net uploadify

将 ASP.NET session ID 值保留在 html 隐藏字段上是否存在任何安全问题?

这是为了解决使用 uploadify 时出现的问题,它基于 flash 工作,并且在通过 ajax 请求向服务器发送正确的 cookie 时存在已知问题 ( this link, look for 'STEP 6' ),因此我在尝试针对基于 session 的身份验证过程进行身份验证时遇到问题。

通过在隐藏字段中输入 SessionId 值,它允许我获取正确的值,并在 global.asax 上编写一些代码后成功解决了这个问题。

我做错了什么吗?顺便说一句,我使用的是 128 位 ssl 加密。

谢谢!!!

编辑: 关键是,如果 session ID 总是出现在 https post/request 中,那么如果我将它们存储为 post 参数或作为 cookie 值 beign 在 http req 中发送,有什么区别?如果拦截我的请求并获取我的 SessionId 的人可以轻松绕过安全性,那么实现身份验证的最佳方法是什么???

最佳答案

是的,任何获得 session ID 的人都可以访问该用户的 session 。这是一个很大的安全风险,许多人错误地将它用于自定义身份验证(您似乎正在这样做)这一事实使情况变得更糟。

通过将其写入页面,您可以更轻松地通过 XSS 技术和其他技术窃取。 session 一点也不安全,这就是为什么 .NET 有自己的使用加密的身份验证方案并与 session 完全分离的原因。

我可以向您发送链接、设置您的 cookie、等待您登录、共享同一个 cookie 并访问您的所有详细信息,就好像我就是您一样。 session ID 是一个随机 token ,根本没有加密。

实现身份验证的方法是通过 .NET 身份验证 cookie,并可选择使用 MembershipProvider。这将创建一个基于服务器唯一机器 key 的加密 cookie。只有此服务器才能解密 cookie 以验证用户身份。如果有人向您强加或窃取 session ID,他们仍然无法验证您的身份。

当然,有人也可能窃取您的身份验证 cookie,但可以选择仅通过 SSL 提供 cookie 以防止这种情况发生,并且由于加密不能强加给您。

关于c# - 在 html 隐藏字段上保留 ASPNET_SessionId 值,是否存在安全问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7290079/

相关文章:

c# - Java 中的 Windows 身份验证

c# - 如何将值从 Controller 方法传递给另一个?

c# - C#中迭代器和数组的区别

javascript - 如何将 javascript 数组发送到 php 文件并将其与数据库进行比较?

javascript - 流畅的菜单导航

c# - ElasticSearch 索引通过 REST API 工作,但不是 C# 代码

JavaScript 继承问题不一致(所有子对象的父对象都是单个实例......或者不是?)

javascript - 删除和添加 css 类 onclick

javascript - 如何使用 jQuery 设置该值的样式

javascript - 如何传递 css :active pseudo class to javascript?