考虑一个非常基本的python套接字,它在主机上打开一个到互联网的端口,并监听在终端中显示的传入消息。
像这样保持端口开放被认为是相当脆弱的,对吗?我应该实现哪些安全功能?是否应该对传入的数据进行消毒?解决这个问题的最佳方法是什么?
感谢。
答案 0 :(得分:6)
为什么这会容易受到攻击?您的程序接受来自任意人(可能在整个Internet上)的连接,并允许它们向您的终端显示任意字节。这里只有一个攻击向量:你的终端本身。如果您的终端有一个错误(例如)执行字节而不是打印它们,那么系统可能因此设置而受到损害。
然而,这是不太可能的 - 实际上,验证程序是否完全被破坏的一种常用技术是将任意数据传递给它们并查看它们是否/如何爆炸。这被称为fuzz testing,如果你的终端在进行模糊测试时出现了这样的错误,那么模糊测试会产生非常有趣的爆炸,而不仅仅是终端垃圾。
仅仅因为某个端口上的某些内容可以访问并不意味着存在漏洞。你需要一个实际可利用的漏洞,在这种情况下,可能不存在漏洞。 (虽然从来不知道。)
答案 1 :(得分:1)
你想要保护什么?除非Python解释器有一个未知的漏洞,否则使用Python来监听套接字并不会直接暴露给你。
处理传入的消息是另一回事。
如果您正在写一个终端,这是否意味着传入的数据应该是特定的格式?你是如何解析传入的数据的?如果有人猫/ dev /随机进入你的端口并使连接保持打开很长时间会发生什么?
邮件的顺序或内容是否重要?
等等。该方案的评论细节并不多,因此建议同样含糊不清。首先,看一下OWASP secure coding principles的一般概念(即使你没有处理HTTP或HTML,它们也适用)。