【问题标题】:source map HTTP request does not send cookie header源映射 HTTP 请求不发送 cookie 标头
【发布时间】:2013-01-25 08:50:37
【问题描述】:

关于源映射,我在 chromium(内部版本 181620)中遇到了一个奇怪的行为。 在我的应用程序中,我使用的是缩小的 jquery,登录后,我开始在服务器日志文件中看到对“jquery.min.map”的 HTTP 请求。这些请求缺少 cookie 标头(所有其他请求都很好)。 这些请求甚至没有在开发者工具的 net 选项卡中公开(这对我来说并没有那么困扰)。

关键是,这个应用程序中的 js 文件应该只对登录的客户端可用,所以在这个设置中,源映射要么不起作用,要么我必须将源映射的位置更改为公共目录。

我的问题是:这是一种期望的行为(意思是源映射请求不应发送 cookie)还是 Chromium 中的错误?

【问题讨论】:

    标签: javascript cookies google-chrome-devtools source-maps


    【解决方案1】:

    我遇到了这个问题,并对为什么某些身份验证 cookie 没有在 .js.map 文件的请求中发送到我们的应用程序感到好奇。

    在我使用 Chrome 71.0.3578.98 进行的测试中,如果 cookie 的 SameSite cookie atttribute 设置为 strictlax,Chrome 在请求 .js.map 文件时不会发送该 cookie。当没有sameSite限制时,会发送cookie。

    我不知道预期行为的任何规范。

    【讨论】:

    【解决方案2】:

    InspectorFrontendHost.cpp 中的String InspectorFrontendHost::loadResourceSynchronously(const String& url) 实现(被调用以加载源映射资源)使用DoNotAllowStoredCredentials 标志,我相信这会导致您观察到的行为。

    此方法具有潜在危险,因此我们(您)可以使用此标志以确保安全并避免泄露敏感数据。

    附带说明,仅将jquery.min.js 提供给登录用户(即,不是来自无cookie 域)在生产环境中部署并不是一个好主意。我不确定您背后的想法,但如果您确实需要避免将文件提供给未访问您网站的客户,您可以求助于检查 Referer HTTP 请求标头。

    【讨论】:

    • 感谢您的回答,我只是想确定这种行为是故意的。我知道从无 cookie 域提供静态文件会更好,但在这种情况下,jquery 只是一个示例,不需要以这种方式提供服务。我们只需要为企业客户保护我们自己的脚本,因此我们不会将任何客户特定的内部信息暴露给外界。顺便说一句,检查引荐来源网址不是我们正在寻找的那种安全级别。
    • 好的,我明白了。对此的一种解决方案可能是通过隐匿的安全方法:在您的资源名称中使用随机多位 Base36(或其他东西)字符串化值,这应该是绝对不可能猜到的。它们只能通过已编译的 JS 源获得,该源将受到登录保护。
    • 通过隐蔽方法注意安全性 - 除非您使用 https,否则任何人都可以通过嗅探流量来获取 URL。另外,我不明白传递 cookie 有多危险:脚本可以访问它想要的任何域,它会发送 cookie。
    • @zaius:(a)你对嗅探是正确的;当我提出这个建议时,我正在考虑“无关联”的人。如果他们进行有针对性的攻击,他们肯定可以做到。 OTOH,如果脚本内容不是通过 https 传输的,他们可以嗅探脚本内容。 (b) 是的,脚本可以,但是如果 DevTools 被黑客入侵,后果可能会很严重(我并不是说它们会是这样:))。
    • 地图文件本身不包含代码,因此将它们放入公共目录应该不会是安全问题。我想要的只是澄清我观察到的行为是否是故意的,这似乎是故意的。
    猜你喜欢
    • 2023-04-01
    • 2020-10-27
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 2018-03-08
    相关资源
    最近更新 更多