网站在服务器端识别没有cookie和IP的用户

时间:2017-07-19 09:06:05

标签: .net asp.net-mvc http cookies

我目前正在通过ASP.NET MVC 5框架开发一个在线商店网站,但以下是烦我的

要求&方法

其中一个要求是服务器应该假设客户端禁用了cookie功能,因此我们决定为每个用户生成一个GUID(如果没有有效的GUID),而不是使用cookie / session来识别用户。 ,将GUID附加到每个超链接,并使用检索到的GUID作为UID。

情况

此时系统正常运行,直到我们为其添加了验证。我们希望避免客户端A从客户端B窃取GUID(这很容易,因为GUID在URL中可见,而SSL无法对其执行任何操作),然后客户端A使用客户端B GUID将项目添加到购物车,并等到客户B付款(如果客户B检查购物车或送货地址,请忽略)。

问题

我们为避免上述黑客行为而做的是从HTTP请求标头中添加一些信息,例如用户IP,用户代理,接受语言等...我们验证每个请求的信息,将GUID视为无效(如果有的话)信息已更改。

问题是我们发现我们地区的一些ISP会通过不同的IP发送每个请求,因此用户将在每个页面/请求上获得不同的GUID。

如果没有IP作为标识符的一部分,似乎不那么安全,我们正在寻找其他一些解决方法来保护我们的客户,我已经完成了一些研究,以下是一些可能的解决方案:

  • 使用ETAG,但我不太明白,但它似乎不太适合我们的项目(在MVC操作中我们只能知道这是否是来自请求页面的客户端的第一次访问,如果有效的客户访问新页面如ConfirmOrder将被视为无效)
  • 通过在请求标头中包含身份信息来使用基本授权,但是为了增加用户体验,我们希望不要求用户输入用户名/密码,但似乎我们无法从中分配默认身份服务器端。

欢迎任何解决方案/建议/线索,感谢您的时间

1 个答案:

答案 0 :(得分:-1)

如果Cookie失败,您可以使用Cookie并仅回退到GUID +硬核验吗?

或者,您可以将每个请求作为AJAX请求执行,只需将entiere页面替换为答案,并通过history.pushState()更新URL(减去GUID)。这也称为PJAX。但是当不允许使用cookie时,JavaScript也可能被阻止。

我也看到应用程序将每个请求作为POST执行,从而隐藏了每个参数。但这也会使页面重新加载或通过后退按钮导航给用户更难。