如何防止未经授权的连接到我的python套接字服务器?

时间:2016-09-12 23:58:31

标签: python sockets tcp

我有一个用python编写的简单服务器,它打开并监听TCP套接字:

import socket

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind(("", 4242)) server_socket.listen(5)

print("TCPServer Waiting for client on port 4242")

while 1:
    client_socket, address = server_socket.accept()
    print("I got a connection from ", address)
    while 1:
        data = client_socket.recv(512)
        if data:
            print(data)
        if not data:
            print("Closed Connection")
            break

它很棒!

我现在想知道......如果他们知道我的IP和端口,任何胭脂客户端都可以连接到我的服务器。鉴于我的IP和端口不是安全的......我怎样才能确保唯一可以连接到此TCP套接字的设备是我自己的设备?

我可以制作某种钥匙吗?那是SSL的意思,我很难理解。似乎SSL只是保护数据不被拦截,但任何人仍然可以连接并写入我的听众?

谢谢!

1 个答案:

答案 0 :(得分:0)

这里不需要SSL。 TSL和SSL是通过网络提供加密通信的协议,因此即使有人“倾听”该通信,他们也无法理解。

accept()方法返回一个元组(conn,地址)(https://docs.python.org/2/library/socket.html

如果地址与您的IP地址不匹配,您可以选择删除该连接(不要重新接收任何数据)。

if address == your_ip
    # receive data

如果你不想以编程方式进行,在Linux下,你可以使用像iptables这样的包过滤工具。

$ iptables -I INPUT -p tcp --destination-port 4242 -s <range_of_blocked_ip_addresses> -j DROP