asp.net - ASP.NET:启用逗号作为 cookie 分隔符而不使用不雅的 hack?
问题描述
本周,我们开始从平板电脑和智能手机上的三星浏览器用户那里收到错误日志,其中偶尔会使用逗号分隔发送到我们服务器的 Cookie HTTP 标头中的两个 cookie,而不是标准的分号。当前定义 cookie 和 HTTP 状态管理的RFC RFC 6265表示只接受分号作为分隔符,但它前面的两个 RFC(2965和2109)指定“服务器也应该接受逗号 (, ) 作为 cookie 值之间的分隔符,以便将来兼容。”
这对我们有两个后果:
- 假设有问题的 cookie 包含 Base64 编码的对象。因为逗号不被解释为分隔符,所以标头中的下一个 cookie 被附加到我们尝试转换的 Base64 值的末尾,并且转换崩溃。
- 就 ASP.NET 自己的 cookie 处理而言,逗号分隔符后面的 cookie 是“丢失”的。
在我们这边拼凑一些东西来修复崩溃的转换是很容易的。我可以寻找一个逗号,如果它存在的话,忽略它和它后面的所有东西,转换就会成功。但后来我必须手动处理恢复“丢失”的 cookie,而且真的,如果可能的话,我想避免这些类型的黑客攻击。鉴于 Android 手机上操作系统更新的状态,我非常希望能解决这个问题。但由于较旧的 RFC 建议在服务器端支持逗号作为分隔符,我希望有一些可配置的东西可以让我免费获得这种行为,而无需在我们的应用程序代码中使用不雅的 hack。
所以真的,我要问的是:
- ASP.NET MVC 曾经支持逗号作为 Cookie HTTP 标头中的分隔符吗?
- 如果是这样,是否有任何方法可以在 MVC 5/Framework 4.5.2 上启用该遗留行为?
解决方案
推荐阅读
- ios - -[EAGLContext presentRenderbuffer:] 在 iOS 14 中崩溃
- kubernetes - 创建 GKE 入口时,是否可以在清单 yaml 中配置负载平衡模式?
- javascript - window.gapi.auth2.getAuthInstance() 在 IOS 14.2 上为空
- r - 如何在 r 中绘制每周时间序列数据在 r 或 ggplot 中的 x 轴上显示日期?
- javascript - Firefox 扩展 FavIconUrl 超长。有什么办法缩小吗?
- delphi - 通过 DrawCell 在 StringGrid 中的多字符串无法按预期工作。德尔福 10.3
- docker - 正在运行的容器的“docker attach”与“docker start -ai”
- java - stream.toArray 可以保证始终为 ArrayList 顺序吗?
- asp.net - 在 .net core 中使用 asp.net 授权
- r - 在闪亮的侧边栏中显示描述