从 REST api 返回奇怪的格式错误的 cookie(有时)

ice*_*sar 4 linux amazon-web-services asp.net-core

我有一个有趣的问题 -有时,从 Incapsula WAF 和 AWS elb 后面的 AWS (.NET Core 2.2) 上托管的 Web API 返回格式错误的 cookie。这搞乱了我的 .NET Framework SDK,它在尝试解析抱怨服务器违反协议的标头时抛出异常(建议通常是这样的: https: //weblog.west-wind.com/posts/2007/Mar/29/The- server-commited-a-protocol-violation-with-WebRequest - 将 useUnsafeHeaderParsing 设置为 true)。

在 fiddler 中,我设法找出问题(可能): 提琴手截图

有人知道这些 cookie 标头来自哪里吗?(正如您所看到的,一些标头是由 AWS/WAF 添加的),但它们似乎不是问题。重要提示:这些 __utm* cookie 仅有时会设置。谷歌搜索,只指向可能的 GA cookies,但它们看起来不同(已经检查过https://www.webtrafficexchange.com/google-analytics-cookies-utma-utmb-utmz

Int*_*raz 7

请参阅我们从 Imperva 支持部门获得的有关 Incapsula 问题的回复:

作为客户端分类过程的一部分,Imperva Cloud WAF 在客户端请求中注入故意格式错误的 cookie。这称为分类 cookie 或测试 cookie。这允许 WAF 查看客户端是否可以解析该故意格式错误的 cookie,以确定发出请求的客户端,即机器人或人类(浏览器),所有现代浏览器都可以解析该 cookie。已知这会导致 API 出现问题,我们可以根据您的请求禁用此功能。您希望我们禁用此 cookie 吗?请确认。它只能由 Imperva 管理员通过后端配置禁用。

我相信它应该可以解决您的问题。

编辑其他信息/上下文(遵循PST的评论):

Imperva 博客文章介绍其反机器人客户端分类过程:https://www.imperva.com/blog/how-incapsula-client-classification-challenges-bots/

整个过程基于使用挑战,机器人的反应预计与常规浏览器或人类不同。

特别是关于 cookie 的原始问题的主题:

Incapsula 似乎首先使用普通 cookie,因为大多数机器人根本不向服务器返回 cookie。机器人变得更加聪明,其中许多现在确实会返回 cookie。因此,该过程得到了改进,添加了常规浏览器会丢弃的格式错误的 cookie(允许 Incapsula 再次区分它们与机器人)。因此,现在他们似乎正在发送两种类型的 cookie(如原始帖子中所示)以获得完整的解决方案:常规的 cookie 来查看客户端是否支持 cookie。这是一种畸形的程序,即使机器人确实支持 cookie,仍然可以区分机器人。

来源:

  1. https://github.com/postmanlabs/newman/issues/2747
  2. https://www.neptuneenergy.com/cookie-policy(如有更改,请在下面引用)

__utmv Incapsula Classification cookie: To see how the client reacts and handles a malformed cookie in order to identify what that client is. lives up to 900 seconds