【问题标题】:What are the proper security measures involved with opening a port with Python? [closed]使用 Python 打开端口涉及哪些适当的安全措施? [关闭]
【发布时间】:2011-08-24 18:58:37
【问题描述】:

考虑一个非常基本的 python 套接字,它在主机上打开一个到 Internet 的端口并监听传入的消息,这些消息显示在终端中。

像这样保持端口完全开放被认为是相当脆弱的,对吗?我应该实施哪些安全功能?是否应该对传入的数据进行清理?解决这个问题的最佳方法是什么?

谢谢。

【问题讨论】:

  • 到目前为止你写过什么代码吗?你在通过什么?永远不要相信你不清理的数据。加密任何敏感的东西。拥有监听端口本身并不是一个缺陷,但您需要提供更多上下文以获得有意义的答案。
  • 哇,有些人根本不知道。

标签: python security sockets ports


【解决方案1】:

为什么这会很脆弱?您的程序接受来自任意人的连接(可能在整个 Internet 上),并让他们向您的终端显示任意字节。这里只有一个攻击向量:您的终端本身。如果您的终端存在(例如)执行字节而不是打印字节的错误,那么系统可能会因为此设置而受到威胁。

但是,这不太可能——事实上,一种验证程序是否完全损坏的常用技术是将任意数据传递给它们,看看它们是否/如何爆炸。这称为fuzz testing,如果你的终端在进行模糊测试时出现这样的错误,那么模糊测试会产生非常有趣的爆炸,而不仅仅是终端垃圾。

仅仅因为某个端口可以访问 Internet 并不意味着存在漏洞。您需要一个实际可利用的缺陷,在这种情况下,可能没有。 (虽然永远不知道。)

【讨论】:

【解决方案2】:

您要保护什么?除非 Python 解释器有未知的 vuln,否则使用 Python 侦听套接字不会直接将您暴露给 vuln。

处理传入的消息是另一回事。

如果您正在向终端写入数据,这是否意味着传入的数据应采用特定格式?你如何解析传入的数据?如果有人将 /dev/random 插入您的端口并让连接长时间保持打开状态会怎样?

消息的顺序或内容重要吗?

等等。没有多少具体的场景需要评论,所以建议同样含糊不清。首先,请查看 OWASP secure coding principles 了解一般概念(即使您不处理 HTTP 或 HTML,它们也适用)。

【讨论】:

  • 但解释器可能正在执行易受攻击的程序...
  • 是的,这就是我在“处理传入消息”方面的区别。原始帖子在数据到达套接字并显示在终端之间的代码路径上过于模糊。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-01
  • 2014-05-13
  • 2021-10-01
  • 2013-02-08
  • 2011-03-08
  • 2015-01-30
  • 2016-11-10
相关资源
最近更新 更多