python 扭曲 : restricting access by IP address

标签 python twisted

通过 IP 地址限制对我的 XMLRPC 服务器的访问的最佳方法是什么?我在 web/twcgi.py 中看到类 CGIScript 有一个正在访问请求的渲染方法......但我不确定如何在我的服务器中访问这个请求。我看到一个示例,其中有人修补了 twcgi.py 以设置环境变量,然后在服务器中访问环境变量……但我认为必须有更好的解决方案。

谢谢。

最佳答案

建立连接后,将调用工厂的 buildProtocol 来创建一个新的协议(protocol)实例来处理该连接。 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 或其他一些平台防火墙也是一个好主意。使用这种方法,您的进程甚至不必看到连接尝试。

关于 python 扭曲 : restricting access by IP address,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1273297/

相关文章:

python - 如何将 csv 文件读取为 dtype datetime64?

python - 如何从另一个模型引用同一个模型两次?

python - 如何从插件调用 Twisted 到已经运行主循环的 GTK 程序?

python - 如何在 Python 中更新 GUI 窗口?

Python datetime.strptime().timetuple() - 'str' 对象不可调用

python - 如何自定义用户名验证

python - 如何将深度嵌套的 JSON 文件转换为 CSV?

python - 写入的不仅仅是 "hello"

python - 在 Twisted *之前* 开始服务时执行异步代码

python - 每天使用 twisted 重置 redis 键