如何保护公共REST API免受使用网络嗅探工具的攻击者的攻击



我们正在用c++开发一个桌面应用程序,分发给我们的客户。它将通过HTTPS使用REST API与服务器通信。我们关注网络嗅探软件,如Wireshark。通过使用这些工具,恶意用户可以记录HTTPS流量,提取请求URL,头和正文,并使用自动脚本或Postman自行向我们的后端REST API服务器执行请求。

我读过一篇文章,其中建议应该使用API键来识别真正从c++应用程序发送的请求。然而,我不明白API密钥如何阻止用户嗅探流量?如果HTTP头中包含API密钥,Wireshark仍然可以轻松提取。

是否有其他的方法来确保对我们的REST API服务器的请求实际上是从我们开发的真正的和未修改的c++应用程序发送的?我们如何确保即使攻击者使用Wireshark,他们也不能自己使用Postman(在我们的c++应用程序之外)调用REST API ?

在TLS加密会话(HTTPS)中发送API密钥是完全安全的,因为头也是加密的。您可以在明文中找到的唯一东西是服务器的主机名/SNI。

不,绝对没有办法确保请求是从"真正的和未经修改的c++应用程序"发送的。但是,如果您想提高标准,使攻击者难以执行中间人(MitM)攻击并分析流量,您可以执行以下操作:

  1. API密钥是一个好东西。做。
  2. 锁定证书,使MitM攻击更难执行。Wireshark仍然会看到流量,但它会被加密。
  3. 混淆代码,因此即使是二进制分析也变得更加困难。

这不会阻止一个有动机的攻击者,但它会大大提高标准,除非你正在做银行应用程序(我相信你不会,因为银行从一些专门从事安全设计的公司那里购买了现成的安全解决方案),那么它可能根本不值得经历所有的麻烦来攻击具有这种保护的应用程序。

最新更新