perl -T

你用了吗?它帮助你在你的Perl脚本发现的安全漏洞?

有帮助吗?

解决方案

更重要的:)它的停止您的安全问题成为一个之前。这当然不是一个安全的灵丹妙药......我们用用它(几年前,当我参与了Perl的项目)在被暴露于外部(即任何mod_perl的应用程序)的任何脚本,我们发现它非常有用,使它我们的政策。它几个检查,这是方便的。(什么使事情自动化)

Perl的安全性 - perlsec 建议它强烈太:

  

此标志[污染模式]强烈建议为服务器程序和代表其他人的任何程序运行如CGI脚本。一旦污染模式被打开,这是在为你的脚本的其余部分。

其他提示

最绝的!

$ echo '`rm -rf /`' | perl -Te 'eval while <>'
Insecure dependency in eval while running with -T switch at -e line 1, <> line 1.

掌握的Perl 几乎完全致力于玷污检查,你应该如何使用“安全编程技术”一章它

很多人会告诉你,它可以保护你,但他们巧妙地撒谎说。这是一个开发工具,可以帮助你找到一些(只有部分)在你的代码,你要小心点。它不会解决所有的安全问题。

我认为,当正在开发新的代码,每个人都熟悉的污染模式会工作得最好。

如果你有别人的代码写得不好,你在污染模式运行 - perl的会死的,而不是由污点规则执行什么是“不安全”的操作。

在污染模式perl的一些孔被修补但不是全部。系统(“$ unfiltered_user_input”)会死,但Perl的仍然可以写$ unfiltered_user_input数据文件具有固定的名字(因为印刷污染的数据被认为是“安全”),然后执行与系统文件()。但没有什么可以检查一切。

有一个权衡有使用它的遗留应用程序。当Perl的发现对污染的数据就会死掉一个不安全的操作 - 这意味着必须有人去,并决定意味着什么解除污染数据,需要什么样的正则表达式,之前的应用程序将是可靠的一次。

有些人宁愿不安全,可靠,成本低(现在)到 - 安全,坏了,需要找开发商。这并不是说那是从长远来看好...但它是不寻常的。

是,污染模式是上面提到的所有原因是有用的。

,你可能不考虑污染的数据的一个方法就是与数据库交互时。幸运的是,DBI具有从进入数据库停止污染数据的支持,它把数据从数据库来为被污染,使你无法做任何不安全的吧。你必须在这个选项专门转;他们在默认情况下是关闭。请参阅的DBI文档更多。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top