我正在构建一个服务器应用程序,它将通过防火墙启动TCP连接来维持与其他应用程序的连接,该防火墙仅对应用程序将连接到的相关IP端口的出站流量开放。
有人接管我们连接的机器以及通过我们建立的出站连接向后利用我们的应用程序的风险是什么。
连接上使用的协议不难理解,但它基于周期性心跳(间隔30秒)。如果错过了两个连续的心跳,则initiater(us)将终止连接并重新连接。
我们应用程序的源代码或二进制文件将无法用于我们连接的orginasation。
答案 0 :(得分:3)
如果攻击者有权访问您要连接的计算机或网络,则攻击者可以直接嗅探网络流量。这可以让他对您的协议进行反向工程,然后尝试将恶意数据注入到返回服务器的数据中,或者完全替换客户端应用程序。
由于听起来您不能信任客户端应用程序,因此无论是谁启动连接,一旦启动,您就拥有双向通信通道。在这种情况下,最好的办法是验证来自客户端的所有数据。
如果您可以信任客户端而不是网络,那么在您的网络协议中添加一些加密将会有所帮助。
答案 1 :(得分:0)
如果您自己的应用程序服务器不侦听任何传入数据,那么风险很小
答案 2 :(得分:0)
除了向你讲协议外,他们对你无能为力。风险正是使用您的协议从终点到终点可以完成的任何事情都将完成。
N.B。我并不是说他们必须向您说出格式良好的版本的协议。如果你的系统使用fgets()将传入的消息读入静态缓冲区,那么'缓冲区溢出'是使用你的协议可以做的事情的一部分。
答案 3 :(得分:0)
您的情况是相当普遍的情况,将网络与互联网完全隔离的情况非常罕见。也就是说,考虑以下因素: