Python Twisted: 限制IP地址访问

2024-10-01 11:26:33 发布

您现在位置:Python中文网/ 问答频道 /正文

按IP地址限制对XMLRPC服务器的访问的最佳方法是什么?我在网上看到了CGIScript类/twcgi.py有一个正在访问请求的呈现方法。。。但是我不知道如何在我的服务器上访问这个请求。我看到一个例子twcgi.py要设置环境变量,然后在服务器中访问环境变量。。。但我得想个更好的解决办法。在

谢谢。在


Tags: 方法py服务器环境变量例子xmlrpc解决办法twcgi
3条回答

好的,另一个答案是从传输中获取ip地址,在任何协议中:

d =^{}() ; print d.type, d.host, d.port

然后使用该值以任何方式过滤它。在

我会在windows上使用防火墙,或者在linux上使用iptables。在

建立连接后,将调用工厂的buildProtocol来创建一个新的协议实例来处理该连接。buildProtocol会传递建立连接的对等方的地址,buildProtocol可能会返回None以立即关闭连接。在

例如,你可以这样写一个工厂:

from twisted.internet.protocol import ServerFactory

class LocalOnlyFactory(ServerFactory):
    def buildProtocol(self, addr):
        if addr.host == "127.0.0.1":
            return ServerFactory.buildProtocol(self, addr)
        return None

并且只处理本地连接(但是最初仍然接受所有连接,因为您必须接受它们才能了解对等地址是什么)。在

您可以将此应用于您用于服务XML-RPC资源的工厂。只需将该工厂的子类化并添加这样的逻辑(或者您可以使用包装器而不是子类)。在

不过,iptables或其他平台防火墙在某些情况下也是个好主意。使用这种方法,您的进程甚至不必看到连接尝试。在

相关问题 更多 >