gpt4 book ai didi

javascript - 通过篡改 POST 负载来远程包含文件。真的可以通过 HTTPS 实现吗?

转载 作者:行者123 更新时间:2023-12-01 03:32:19 25 4
gpt4 key购买 nike

以下是我的前端应用程序如何加载其所需的 JS 文件:

页面(在 HTTPS 上)将发送一个 POST 请求,描述应从各个服务器加载哪些 JS 文件。有效负载大致如下所示:

{
"1": "https://somehost.com/path/first.js",
"2": "https://someotherhost.com/path/second.js"
}

服务器将收集所有这些 JS 文件,将它们连接起来并发回客户端。客户端会将收到的内容放置在动态创建的 <script> 中标签。

我们对此运行了 IBM Appscan,令我惊讶的是,Appscan 报告了远程文件包含漏洞,并且该工具能够向 JSON 添加第三个参数,实质上修改了有效负载。所以它看起来像这样:

{
"1": "https://somehost.com/path/first.js",
"2": "https://someotherhost.com/path/second.js"
"3": "https://appscan-host/malicious-test.js"
}

我的问题是:

  1. 这真的是一个合理的场景吗?攻击者可以修改受害者浏览器发送的 POST 有效负载以包含远程恶意脚本吗?我就是无法理解这个问题 - 我确信我在这里遗漏了一些东西。
  2. 鉴于我们的架构可以在 JSON 有效负载中动态发送 JS 文件 URL,以便服务器加载并发送回客户端,我需要采取哪些可能的解决方案来修复该漏洞?
  3. 我读到过有关使用 HMAC 的信息来签署请求,但如果攻击者弄清楚了客户端生成 HMAC 的算法,他就可以在篡改 post 有效负载后重新计算 HMAC 并替换客户端发送的 HMAC,对吗?

另外,如果这有帮助的话,我们使用基于 cookie 的身份验证(Tomcat 服务器,在基于表单的身份验证之后为后续请求设置 JSESSIONID HttpOnly cookie)。

最佳答案

我完全同意@duskwuff的回答,只是在这里添加一些要点(这些是对之前答案中已经提到的内容的补充,而不是替代):

  1. Is this really a plausible scenario? That an attacker can modify the POST payload sent by the victim's browser to include a remote malicious script? I just can't wrap my head around this - I'm sure I am missing something here.

虽然攻击者无法修改(甚至以纯文本方式拦截)正在进行的 https 请求,但他可以在创建时修改请求,可能通过某种 Cross-site scripting脆弱性。因此,受害者不仅是您的服务器(请参阅前面的答案),而且也是您的客户端。

  1. I read about using an HMAC to sign the requests, but if the attacker figures out the algorithm used for generating the HMAC on the client side, he can just recompute the HMAC and replace the HMAC sent by the client, after tampering the post payload, right?

尽管 HMAC 签名是安全的(只要您的 key 是安全的),但我认为在客户端代码中包含 HMAC 生成例程不会对您有任何好处,因为攻击者可以轻松查看 HMAC 算法和您的 key ,并且可以欺骗您的签名。 HMAC 仅在安全且值得信赖的环境(例如您自己的服务器)中执行时才有效。

就您而言,最好的办法是将合法 URL 列入白名单,并仅从受信任的域下载 js 文件。

关于javascript - 通过篡改 POST 负载来远程包含文件。真的可以通过 HTTPS 实现吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44480116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com