2017-09-04 36 views
0

我正在開發一個aws雲上的聊天后端應用程序。爲了爲聊天后端製作可擴展的體系結構,我必須確保打開連接的人是真正的人。如何防止我的應用程序通過代理髮送數據?

更準確的說聊天ofcourse必須保持tcp連接與服務器開放所有的時間和我有以下問題:

1 - 後端有一個負載平衡器elastic load balancer

2 - tcp客戶端應用程序和後端服務器之間的連接必須保持打開狀態並保持活動狀態。這意味着應用程序必須保持與服務器的連接而不是負載平衡器的連接。

3 - elb負載均衡器必須通過會話表sticky session將連接和負載發送到與之前連接的應用相同的服務器。 不幸的是,負載平衡器只支持l4l7層,我想我需要使用l3層。

這裏的主要問題是大多數人在代理服務器後面操作,所以我不能保持與他們的連接,因爲tcp連接將與代理而不是他們的應用程序。

我不知道如何解決這個問題,但我現在知道的唯一解決方案是: 我必須防止用戶在任何代理服務器後面運行,以確保tcp連接與他們不是代理直接相連我要這樣做嗎?

如果有辦法讓它們在代理之後運行,並且可以在後端解決問題,請告訴我。

回答

2

我不確定我是否理解您的問題。如果你使用的是網絡套接字,大多數代理服務器都會允許這種類型的通信,但是如果它們有超時等,它們也可能會給你帶來麻煩。

您無法控制某人是否在代理人後面。在很多情況下,代理將完全透明,所以如果不檢查所有網絡跳數,您將無法知道它在那裏。您可能需要進一步閱讀。良好的開端是這樣的文章 -

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

如果你正在嘗試使用的IP地址作爲身份驗證機制,我建議,而不是使用標準的認證機制。一旦通過身份驗證,您應該使用會話cookie,JWT或其他標準會話管理解決方案來管理會話。請注意,JWT通常是無狀態的(不使用會話),但可用於授權用戶使用會話類型數據。

+0

好吧然後我可以做一個聊天應用程序,必須打開tcp連接ith服務器? –

+1

代理服務器將進行連接,而不是真正的應用程序 –

+0

該應用程序將使連接仍然存在。這只是通過代理服務器路由完成的。 – BryceH

相關問題