2011-08-24 54 views
1

考虑一个非常基本的python套接字,它可以在主机上打开一个连接到互联网的端口,并监听在终端中显示的传入消息。用Python打开一个端口涉及哪些适当的安全措施?

保持这样的港口开放被认为相当脆弱,正确吗?我应该实施哪些安全功能?传入的数据是否应该进行消毒?这是怎么回事?

谢谢。

+3

到目前为止,您是否有任何代码?你通过了什么?永远不要信任你没有消毒的数据。加密任何敏感的东西。有一个监听端口本身并不是一个缺陷,但你需要提供更多的上下文来获得有意义的答案。 –

+0

有些人只是没有线索。 – rook

回答

6

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

但是,这是不太可能的 - 事实上,验证程序没有完全破坏的一种常用技术是将任意数据传入它们,并查看它们是否/如何爆炸。这叫做fuzz testing,如果在你的终端上进行模糊测试时有这样的错误,模糊测试会产生真正有趣的爆炸,而不仅仅是终端垃圾。

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

+0

的确,除非你的Python脚本['exec()是通过线路发送的代码](http://thedailywtf.com/Articles/Client-side_PHP.aspx),否则你应该没问题。 –

1

你想保护什么?使用Python监听套接字不会直接暴露给vuln,除非Python解释器有一个未知的vuln。

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

如果您正在写入终端,是否意味着传入的数据预期会采用特定的格式?你如何解析传入的数据?如果有人将/ dev/random放入您的端口并将连接打开很长时间,会发生什么情况?

消息的顺序或内容是否重要?

依此类推。这个场景的具体内容并不多,所以建议也同样模糊。首先,请查看OWASP secure coding principles中的一般概念(即使您不处理HTTP或HTML,也可以使用它们)。

+0

但解释器可能正在执行一个易受攻击的程序... – rook

+0

是的,这是我在“处理传入消息”方面的区别。原始帖子在数据到达套接字之间的代码路径上过于模糊,并显示在终端中。 – Mike

相关问题