我正在用Python编写套接字服务器,还有一个用于连接服务器的套接字客户端。
客户端以调用操作时客户端发送信息的方式与服务器交互,并且服务器处理信息。
我遇到的问题是,我能够通过Telnet连接到我的服务器,可能还有其他我尚未尝试的事情。我想禁用这些其他客户端的连接,并且只允许来自Python客户端的连接。 (最好是我的定制客户端,因为它发送信息进行通信)
有没有办法在连接上设置身份验证以区分Python客户端?
目前没有代码,因为这是我想在弄脏之前能够解决的问题。
答案 0 :(得分:1)
当与服务器建立新连接时,您的协议必须指定一些方法供客户端进行身份验证。最终,网络基础设施无法确定哪种流程启动了连接,因此您必须指定一些允许服务器确保它真正与有效客户端进程通信的交换。
答案 1 :(得分:1)
@holdenweb已经用基本信息给出了一个很好的答案。
如果(终端)软件将您的应用程序期望的字节作为有效标识发送,您的应用程序将永远不会知道它是否与原始客户端或其他任何内容进行通信。
测试有效客户端的一种可能方法是,您的服务器发送加密且经过身份验证的问题(每次测试时应该有不同的问题!),例如:类似于"什么是18:37:12(当前日期和时间)加上2(随机)小时?"
加密/认证将是另一个问题
如果您保密此算法,则只有您的客户可以回答并成功验证自己。它可以被黑客攻击/反向工程,但它对基本攻击者是安全的。