【问题标题】:Bitdefender Encrypted Web Scan blocks Same-Site Api CallsBitdefender 加密 Web 扫描阻止同站点 Api 调用
【发布时间】:2021-12-30 12:44:51
【问题描述】:

我有一个简单的安全同站点跨域设置,例如:

前端:https://www.example.com 接口:https://api.example.com

在这两个域上,我们都使用 Amazon (AWS ACM) 颁发的 SSL 证书

我们的一些客户安装了 Bit Defender Total Security,它可以阻止对我们自己的 API 的 api 调用,甚至是不涉及任何花哨的凭据/cookie 交换的简单 GET 调用。

我发现 Bitdefender 删除了实际 XHR 请求中的 access-control-allow-origin 标头;对 api 的 OPTIONS 调用仍然具有正确的标头。

当我在 Bitdefender 中禁用“Online Threat Prevention's Web Protection > Encrypted Web Scan”功能并重新启动 Chrome 时,它​​按预期工作,GET 对 api 的调用正确返回 access-controll-allow-origin=https://www.example.com

如果 api 在同一个域中,也不会发生此问题,例如 https://www.example.com/api,这表明这也是 Bitdefender 的 CORS 相关行为。

阅读此功能的描述后,我想可能是 bitdefender 不喜欢我们的证书,我用 LetsEncrypt 证书替换了我们的 AWS 证书;甚至没有通配符证书;还是同样的问题。

我还注意到 Bitdefender 用他们自己的本地证书替换了我们的证书,充当中间人,可能是为了扫描我认为的请求。

我不明白的是,例如 www.imdb.com 与他们的 api.graphql.imdb.com 有类似的设置,他们也使用 AWS 证书。

但由于某些原因,他们的证书没有被替换,并且他们的 access-controll-allow-origin 标头没有在他们的 api 请求中被删除。

到目前为止,我发现我们和 IMDB 之间的唯一区别是他们在请求中使用 TLS 1.3,而我们使用 TLS 1.2(通过 AWS API 网关)

到目前为止,我发现的在线帮助仅建议要求客户在他们的网站上切换 Bitdefender 中的该功能,如果这种设置适用于 IMDB,我很难接受(好吧,也许他们被 Bitdefender 列入白名单)

我也将它作为“误报”线程标识报告给 Bitdefender,但没有任何结果。

还有什么我可以寻找的想法吗?

【问题讨论】:

标签: security ssl amazon-web-services bitdefender


【解决方案1】:

Bitdefender 团队非常有帮助。事实证明,当 Bitdefender 处于活动状态时,它会降级为 http/1.1 协议。我们的服务器没有返回 http/1 的“Access-Control-Allow-Origin”标头,而仅返回 http/2。 即使没有 Bitdefender,我也可以通过使用 curl 轻松调试它 --http1.1 标志处于活动状态,或使用 --disable-http2 启动 Chrome。 我们在设置中使用了 AWS API Gateway,经过一番谷歌搜索后,我发现 AWS 解析的请求标头与 http/1 略有不同。

headers.Origin 与 headers.origin

我们使用原始值来创建正确的响应标头,并且因为我们需要小写字母,所以我们基本上找不到该值。 是的,只有一封信花了我好几天的时间。 通过简单地添加这个后备它就可以了:

const origin = headers["origin"] || headers ["Origin"]

感谢 Bitdefender 的提示!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-14
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 2017-09-23
    相关资源
    最近更新 更多