ASP.NET:启用逗号作为cookie分隔符而不诉诸轻率的hack?

时间:2019-01-03 19:00:14

标签: asp.net http cookies samsung-browser

这周,我们开始从平板电脑和智能手机上的三星浏览器的用户那里获取错误日志,其中偶尔会使用逗号分隔发送到我们服务器的Cookie HTTP标头中的两个Cookie,而不是标准的分号。 。当前定义cookie和HTTP状态管理的RFC RFC 6265总体上表示,仅 分号被接受为分隔符,但它前面的两个RFC(29652109)指定“服务器还应接受逗号(,)作为cookie值之间的分隔符,以实现将来的兼容性。”

这对我们有两个后果:

  • 假设有问题的cookie包含Base64编码的对象。由于逗号不被解释为分隔符,因此标​​头中的下一个cookie被附加到我们尝试转换的Base64值的末尾,并且转换失败。
  • 就ASP.NET自己的cookie处理而言,逗号分隔符后面的cookie是“丢失”的。

我们很容易一起破解某些东西,以解决崩溃的转化问题。我可以寻找一个逗号,并忽略它以及它后面的所有内容(如果存在),那么转换将成功。但是然后我必须手动处理恢复“丢失的” Cookie,实际上,如果可能的话,我想避免此类黑客攻击。考虑到Android手机上的OS更新状态,我对此完全没有希望。但是,由于较早的RFC建议在服务器端使用逗号作为分隔符,因此我希望可以在某个地方进行配置,以便免费获得此行为,而不必在我们的应用程序代码中使用过分的技巧。

实际上,我要问的是:

  • ASP.NET MVC是否曾经支持逗号作为Cookie HTTP标头中的分隔符?
  • 如果是,是否有任何方法可以在MVC 5 / Framework 4.5.2上启用该旧行为?

0 个答案:

没有答案