我有一个C ++应用程序通过TCP套接字连接到nodeJS服务器。 关于socket'握手'客户端使用服务器已知的UUID对自身进行身份验证,然后服务器将该帐户与此已识别的UUID相关联
打开TCP套接字后,应用程序会发送请求,服务器会通过同一套接字应答。
是否有必要为每个请求添加密码以确保请求来自客户端?或者是一个插座应该就位并保持原位?
我应该确定客户是客户:
答案 0 :(得分:2)
服务器已知的UUID通常称为令牌。它可以用于您的场景。但是,它永远不应该是未加密的。 您需要确保以下内容:
这通常使用TLS完成。 (这就是使HTTPS安全的原因。)
我建议您对基于令牌的身份验证/授权和TLS / SSL进行一些研究。
最后一条建议:不要自己实施加密代码,而是使用经过充分利用的库,因为它经过大量测试并具有良好的维护性。
答案 1 :(得分:1)
不,这不是“安全”。你的计划很容易受到攻击,重播攻击,中间人攻击,窃听,随后冒充......
套接字不像实际的物理管道或隧道。套接字只是一个协议,标记有某个源和目标端口对的数据(这些只是数字)将被视为属于特定的逻辑数据通道。这是由握手和信任决定的。没有验证。
您特别询问的是中间人攻击是否存在。是的,是的,他们这样做。
是否需要在每个数据包中给出密码才能解决这个问题?不,它不会。拦截然后重播将是微不足道的。你只是给那个中间人提供密码。
这就是人们使用加密和其他聪明的安全方案的原因。如果您担心消息的真实性和完整性,那么您需要基本的通信安全原则基础;提供一个超出了这个答案的范围。