【问题标题】:Python. Need to be sure the connection is made from the local machine?Python。需要确保连接是从本地计算机建立的吗?
【发布时间】:2013-12-25 02:39:31
【问题描述】:

假设您在本地机器上有一个 HTTP 服务器,这是一个典型的 Python/Twisted 应用程序。此服务器用于访问您的本地数据,服务器仅用作 GUI 界面。所以用户可以使用他的网络浏览器或特殊的应用程序(就像一个网络浏览器)来访问他的本地数据。

现在您要确保只有实际坐在这台机器附近的本地用户才能访问 HTTP 服务器。

我还有 FTP 服务器,它也必须以同样的方式保护。

目前我正在为我的 HTTP 服务器运行这样的代码:

class LocalSite(server.Site):
    def buildProtocol(self, addr):
        if addr.host != '127.0.0.1':
            print 'WARNING connection from ' + str(addr)
            return None
        try:
            res = server.Site.buildProtocol(self, addr)
        except:
            res = None
        return res

所以我现在只是检查 IP 地址,我不确定这是否足够。 有什么方法可以从远程机器模拟本地 IP。? 好吧,如果坏人可以访问我的操作系统,我将无法保护 - 但这不是我的交易。我的防火墙和防病毒软件应该关心这个,对吧?

无论如何,我想听听有关增加此类 HTTP 服务器安全性的任何额外想法。

也许我们可以使用 MAC 地址来验证连接。? 检查本地机器上的进程并检测哪些实际执行连接?

我们可以使用 HTTPS,但据我了解,这是相反的:这是让用户信任服务器,而不是服务器信任用户。

使用验证码是一种解决方案。但我根本不喜欢这个(它让用户紧张),这对 FTP 服务器不起作用。

每次应用程序启动时我也使用随机端口号。

未定义互联网连接类型 - 这是一个 p2p 应用程序。 WEB 中的任何用户都可以使用我的软件,并且必须防止远程访问。

【问题讨论】:

  • 应该没问题。 This问题可以详细说明。
  • 好的。那篇文章非常接近我的问题。然而,人们都在谈论 Linux(不是吗?),但我希望处理任何操作系统。据我了解,数据包可能会被接受,但响应会消失。所以我也不同意这一点。反正!感谢您的帖子!

标签: python security http ftp twisted


【解决方案1】:

我相信你处理它的方式已经足够好了。关于它是跨平台的,我相信它是因为 Windows(从 Windows 7 开始)也将 localhost 映射到 127.0.0.1 但对于以前的版本,您必须在主主机文件中定义 localhost。

【讨论】:

  • 谢谢!但是,我仍然会添加一些额外的保护,但前提是这将是一个简单的解决方案。关于 localhost:在我的 WindowsXP 上,我看到“127.0.0.1 localhost”在我的主机文件中。我怀疑所有 XP 用户默认都有这个,对吧?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-05
  • 2017-05-13
相关资源
最近更新 更多