问题标签 [man-in-the-middle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1295 浏览

web-services - 防止中间人(例如代理)服务器假装它不是

我正在开发一个 Web 服务,我可以知道哪个最终用户当前正在执行请求,这一点非常重要。因此,从本质上讲,我需要一个隐式用户(或者甚至更好的是,用户的设备)标识。

我的 Web 服务不需要身份验证,用户可能会在他们的移动设备和我的 Web 服务之间放置一个代理服务器,并通过该代理服务器路由他们的所有流量。我不想禁止用户这样做,因为可能有很多原因,但我仍然想知道当前正在连接哪个设备。

也许需要一些密码学?

0 投票
1 回答
167 浏览

security - 在 NServiceBus 中处理中间人攻击

正在寻找使用 NServiceBus 从后端应用程序服务器与 DMZ Web 服务器通信,我正在寻找指导以防止 MITM 攻击。

如何使用 NServiceBus 或任何其他方式对消息进行加密(防止窃听)和散列(防止篡改)?

对此的任何帮助都会很棒,谢谢

0 投票
4 回答
1330 浏览

security - 防止对非 HTTPS 的中间人攻击

有什么方法可以防止或检测通过普通 HTTP 的中间人攻击?

我想在客户端机器上运行一个javascript小程序,确信代码没有被修改。是否有任何巧妙的技巧来签署代码或安全地交付代码,而无需采用通常的 HTTPS 和证书路线?

0 投票
2 回答
2566 浏览

php - 在安全 API 通信中使用请求签名时防止重放攻击?

我一直在阅读 API 通信证券并试图找出构建安全 API 的最佳方法。我知道存在 OAuth 等,但我也在尝试在此过程中自我教育,而不是依赖库。

基本上我有一个 Web 服务,并且在该 Web 服务中用户可以注册 API。他们将获得一个配置文件 ID 和密钥,他们必须使用它们来构建来自另一个 Web 系统的 API 请求。

API 请求的构建方式与银行类似,所有发送到 API 的输入数据都必须进行排序,计算哈希值,然后将哈希值发送到服务器,如下所示:

这真的很好并且有效。但!我的问题是潜在的重放攻击。如果有人窃取了这个请求 URL,他们可以再次将其发送到服务器,即使他们无法更改数据本身。

现在我已经阅读了一些关于它的内容,您还应该检查时间或在请求中添加一次性使用令牌,但我不确定我应该怎么做?发送带有请求的时间戳真的足够安全吗?(如果时钟有点同步,接收服务器将确保请求是在发出请求的几秒钟内发出的)。

我还可以添加 IP 验证,但这些可能会发生变化,并且可能会受到一定程度的欺骗,并且给用户带来更多麻烦。

我会喜欢这种一次性令牌类型的系统,但我不确定如何在不将令牌生成暴露于完全相同的重放攻击问题的情况下做到这一点?(我需要的最后一件事是允许为中间人提供安全令牌)。

非常欢迎意见和文章,我一直无法找到回答我的具体问题的材料。我想说我的 API 是安全的,而不仅仅是市场营销。

谢谢!

0 投票
2 回答
11338 浏览

diffie-hellman - 如何利用 Diffie-hellman 进行中间人攻击

我正在做一个项目,其中 Alice 和 Bob 使用 Diffie-Hellman 密钥交换相互发送消息。让我陷入困境的是如何将他们正在使用的证书合并到其中,这样我就可以获得他们的秘密消息。

根据我对 MIM attakcs 的了解,MIM 充当冒名顶替者,如下图所示:

在此处输入图像描述

以下是我的项目的详细信息。我知道他们在沟通之前都同意了 g 和 p,但是我如何能够在他们都有证书来验证他们的签名的情况下实现这一点?

Alice 准备 ⟨signA(NA, Bob), pkA, certA⟩ 其中 signA 是 Alice 使用的数字签名算法,“Bob”是 Bob 的名字,pkA 是 Alice 的公钥,等于 gx mod p 根据 X 编码。 509 用于 Diffie-Hellman 密钥交换中指定的固定 g,p,并且 certA 是 Alice 的证书,其中包含验证签名的 Alice 的公钥;最后,NA 是一个 8 字节长的随机数(随机字符串)。

Bob 检查 Alice 的签名,并用 ⟨signB{NA,NB,Alice},pkB,certB⟩ 回复。Alice 收到消息,她检查她的 nonce NA 并根据 Diffie-Hellman 密钥交换基于 pkA、pkB 计算联合密钥。然后 Alice 将消息 ⟨signA{NA,NB,Bob},EK(MA),certA⟩ 提交给 Bob 和 Bobrespondswith⟨SignB{NA,NB,Alice},EK(MB),certB⟩。

其中 MA 和 MB 是它们对应的秘密消息。

0 投票
2 回答
1444 浏览

ssl - 通过完全记录握手来破坏 TLS 安全性

我最近一直在研究 TLS,我不确定它为什么如此安全,但可能是由于对它的工作原理存在误解。但是如果整个握手被记录下来,无论是使用中间人攻击还是目标计算机上的数据包嗅探器,那么任何剩余的通信都可以被解密,因为您将拥有客户端和服务器用来生成的所有信息加密密钥。

我怀疑 tls 中会有这样的漏洞,但是谁能告诉我 tls 如何防御这个漏洞?

0 投票
1 回答
742 浏览

php - 访问 https 资源时,PHP 的 fopen() 是否可以防止典型攻击?

如果我使用 PHP 的fopen()函数从 HTTPS 网站检索数据,这就是所谓的安全 HTTPS 连接。即它是否提供针对中间人攻击和窃听攻击的保护?

0 投票
1 回答
2292 浏览

authentication - 在客户端第一次连接到服务器时,VPN 是否可以“中间人”?

根据http://en.wikipedia.org/wiki/Secure_Shell#Key_management,ssh 在与服务器建立第一个连接时容易受到“中间人”攻击。

SSH 还支持由自动生成的密钥加密的基于密码的身份验证。在这种情况下,攻击者可以模仿合法方,询问密码并获取密码(中间人攻击)。然而,这只有在双方以前从未进行过身份验证的情况下才有可能,因为 SSH 会记住远程端曾经使用过的密钥。

VPN是否有同样的“弱点”?

0 投票
0 回答
54 浏览

django - 避免在 Django 站点上进行 POST 伪造

我正在尝试一种方法来了解我的网站用户的特定 Twitter 身份,即使他们没有登录。并且希望社区的帮助,以找出我可以如何减少冒充的可能性。

主要思想是用户来到主页,填写表单,然后单击“tweet this”按钮作为提交表单的一种方式。这会打开一个弹出窗口,用户会在其中看到一条预先填写的消息:“我刚刚提交了此表单”并在推特上发布。此弹出窗口位于 twitter.com 上。这里不涉及oauth。推文完成后,推特将刚刚创建的推文的 id 发送回网页上的 javascript 回调函数。这个 javascript 函数 ajax 将表单字段以及推文 ID 发布到服务器上的处理程序。

然后,服务器获取该推文的 Twitter 信息,包括用户信息,并使用外键将表单信息保存给用户。

我要避免的是冒充者来到页面,用垃圾填写表单,然后手动将包含推文 ID 的表单发布到来自另一个用户的不相关推文。

我正在使用的 Django 有一个叫做 CSRF 令牌的东西,可以避免模仿者在不加载页面的情况下进行 POST 调用。但我不确定这是否也会阻止加载页面(并查看 csrf 令牌)的用户伪造 POST。

我要避免的主要事情是让人们将不属于他们的 twitter id 与他们发布的 for 相关联。

期待您提出一些创造性的方法来解决这个问题或戳破我的想法。

0 投票
1 回答
175 浏览

debugging - 使用日志代理/MitM 进行 NPAPI 调试

我正在调试/破解一个 NPAPI 浏览器插件,我想记录/窃听浏览器和插件之间的通信,以确切了解插件在做什么。你知道是否有现成的工具吗?我没有找到。

我的动机是 a) 分析插件并 b) 评估它的安全性。

我认为它通常应该可以作为中间人,即窃听者,它将充当 a) 作为浏览器的插件和 b) 作为插件的浏览器,并且只传递所有命令(方法调用)。因此非常简单明了的解决方案。

谢谢