如何防止我的应用程序通过代理发送数据?

时间:2017-09-04 16:36:22

标签: sockets amazon-web-services networking tcp proxy

我正在aws云上开发聊天后端应用程序。为了建立聊天后端的可扩展架构,我必须确保打开连接的人是真实的。

更准确的说,聊天时必须始终与服务器保持tcp连接,并且我遇到以下问题:

1 - 后端有一个负载均衡器elastic load balancer

2 - 客户端应用程序与后端服务器之间的tcp连接必须保持打开和活动状态。这意味着应用必须使服务器与elb负载均衡器保持连接。

3 - elb负载均衡器必须发送连接并通过会话表sticky session加载到之前连接到的应用程序的同一服务器。 遗憾的是,负载均衡器仅支持l4l7层,我认为我需要使用l3图层。

这里的主要问题是大多数人在代理服务器后面操作,因此我无法与他们保持联系,因为tcp连接将使用代理而不是他们的应用程序。

我不知道如何解决这个问题,但我现在知道的唯一解决方案是: 我必须阻止用户在任何代理服务器后面运行,以确保tcp连接是直接与他们而不是代理,我该怎么做?

如果有办法让他们在代理服务器后面运行,可以在后端告诉我。

1 个答案:

答案 0 :(得分:2)

我不确定我理解你的担忧。如果您使用的是Web套接字,大多数代理都会允许这种类型的通信,但如果它们有超时等,它们也会给您带来麻烦。

您无法控制某人是否在代理人后面。在许多情况下,代理将完全透明,因此如果不检查所有网络跃点,您将无法知道它是否存在。您可能想要进一步阅读此内容。这篇文章是一个好的开始 -

https://www.infoq.com/articles/Web-Sockets-Proxy-Servers

如果您尝试使用IP地址作为身份验证机制,我建议使用标准身份验证机制。经过身份验证后,您应该使用会话cookie,JWT或其他标准会话管理解决方案来管理会话。请注意,JWT通常是无状态的(不使用会话),但可用于授权用户使用会话类型数据。