我如何使用 ASP.NET MVC(或核心)来检测和重定向无 cookie 会话?

How can I use ASP.NET MVC (or Core) to detect and redirect cookieless sessions?

我正在创建一个网站,有安全意识(偏执狂)的人可能会阻止 cookie,甚至身份验证 cookie。

我想检测这个实例,并重定向到描述 corresponding risks with cookieless sessions.

的 FAQ/Help 页面

你在混淆术语,所以有点不清楚你在说什么。会话要么是无 cookie 的,要么不是。如果您在 ASP.NET 中使用无 cookie 会话,则每个会话都是无 cookie 的。因此,警告用户他们被迫使用的东西存在固有的安全风险是毫无意义的。如果您不使用无 cookie 会话,那么每个会话都需要一个 cookie,同样没有必要警告用户一些甚至不适用于他们的事情。

在这里唯一有意义的是要求会话 cookie(无 cookie 会话),然后通知没有启用 cookie 的用户他们将无法使用您网站中需要 cookie 的部分(经过身份验证的区域和您可能使用会话的其他地方)。为此,您可以使用 JavaScript 来检测是否通过 navigator.cookieEnabled 启用了 cookie,或者您可以 server-side 通过:

  1. 设置 cookie 或只是将某些内容保存到会话中(这将需要设置 cookie)
  2. 重定向
  3. 检查之前设置的 cookie 或会话数据

如果它在重定向后存在,则 cookie 已启用。如果不是,则它们被禁用。