ASP.NET - cookieless=UseCookies - 浏览器中只有 session ID?没有客户端cookie?

标签 asp.net security cookieless

我正在开发 asp.net (4.0) 网站。我试图使用表单例份验证()。显然是在试图确保某些页面的安全。我的理解是,最好的安全解决方案是设置 cookieless="UseCookies",这样它就不会将 id 写入 URL。

我的问题是当我使用 cookieless="UseCookies"时到底发生了什么。

  1. 是否创建了 session 并在浏览器中存储了一些 id(~内存,稍后用于从 IIS 服务器端 session “cookie”中提取信息),或者它实际上是创建“常规”客户端加密 cookie 的配偶?

(我显然试图避免写入 URL 和客户端 cookie - 不确定是否可以避免所有这些)

  1. 如果在浏览器中设置了 ID,则所有浏览器都允许在其中存储 session ID。如果浏览器不允许,会发生什么?有没有办法预先检查一下?

所以我想,作为我们所有人,我只是想构建适当的安全应用程序,如果有人有任何其他建议,我们将不胜感激。

坦克很多,

最佳答案

如果您允许 cookie,请设置 cookieless="false",sessionID 将存储在 cookie 中,并且在整个 session 期间(默认为 20 分钟)都可以访问它。

如果您允许cookie并且用户将在浏览器中禁用cookie,则sessionID将不会存储在任何地方,并且每次用户创建新请求(通过转到另一个页面)时,他都会获得新的sessionID,因此没有数据可以被保存。

您可以使用 cookieless="true"来加密 sessionID 并将其附加到 url 中,以便用户即使启用了 cookie,也能够保留 session 。

还有一个 cookieless="AutoDetect",它将确定用户是否禁用或启用了 cookie,并基于此将创建一个带有 sessionID 的 cookie 或将其扔到 URL。这样做的缺点是,对页面的每个请求都会产生 3 个请求,一个请求确定用户是否启用了 Cookie,附加一个带有第一个请求结果的查询字符串,第三个请求将用户带到适当的 URL。

还有一个设置可以根据浏览器的数据关闭和打开 cookieless。因此,如果有人使用 10 年前的手机浏览您的页面,它可能会将 Cookie 附加到 URL,因为该设备上没有允许 Cookie 的选项。

我希望这有帮助。我个人会向用户发送消息以启用 cookie,甚至不用担心其他情况,但有些人(例如我的老板)不喜欢这个想法并希望每个人都支持。

关于ASP.NET - cookieless=UseCookies - 浏览器中只有 session ID?没有客户端cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10125876/

相关文章:

c# - 如何在 LINQ 查询中从字典获取值到新对象

asp.net - 发送 POST 请求时,带有 ASP.NET Core CORS 的 Angular2 出现问题

php - sql 查询是否免受 googlebots 攻击(google sql 注入(inject))

javascript - 具有用于 cookieless 域的自定义 javascript 函数的 LESS CSS

c# - 在 ASP 转发器中设置 CheckBox "Checked"属性

asp.net - 如何在 web.config 文件中包含 &/&

security - 身份服务器 API 策略和角色

使用 PhoneGap 创建移动应用程序时的安全注意事项

css - 从静态域提供 CSS

asp.net - ASP.NET 中的混合模式无 Cookie/Cookie session