我目前正在通过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作为标识符的一部分,似乎不那么安全,我们正在寻找其他一些解决方法来保护我们的客户,我已经完成了一些研究,以下是一些可能的解决方案:
欢迎任何解决方案/建议/线索,感谢您的时间
答案 0 :(得分:-1)
如果Cookie失败,您可以使用Cookie并仅回退到GUID +硬核验吗?
或者,您可以将每个请求作为AJAX请求执行,只需将entiere页面替换为答案,并通过history.pushState()
更新URL(减去GUID)。这也称为PJAX。但是当不允许使用cookie时,JavaScript也可能被阻止。
我也看到应用程序将每个请求作为POST执行,从而隐藏了每个参数。但这也会使页面重新加载或通过后退按钮导航给用户更难。