perl - Perl模式的污点是否有用?

  显示原文与译文双语对照的内容
0 0
perl -T

你是否使用它它有助于你在Perl脚本中找到安全漏洞?

时间:原作者:5个回答

0 0

:以上)它停止之前成为你的安全问题。 当然不是安全的silver 。 我们曾经用它( 几年前我参与了Perl项目) 暴露在外部( 例如 任何脚本。 任何mod_perl应用程序,我们发现它非常有用,并成为我们的策略。 它做了一些检查,而且很方便。 ( 任何使事情自动化的东西)

Perl安全性- perlsec 建议它也很强:

这里标志 [Taint mode] 强烈建议用于服务器程序和代表其他人运行的任何程序,如CGI脚本。 一旦启用了污染模式,它就会用于你的脚本的其余部分。

原作者:
0 0

最绝对 !

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

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

如果你有别人编写得很糟糕的代码,并且你在污染模式下运行它,-- perl会死而不是由污染规则'不安全'操作执行。

在污染模式中,perl有一些漏洞,但不是全部。 系统("$unfiltered_user_input") 将终止,但Perl仍然可以将 $unfiltered_user_input 数据写入一个具有固定名称( 因为被污染的数据被认为是'安全')的文件,然后用 system() 执行该文件。 但是什么都不能检查一切。

在传统应用上使用它有一个权衡。 当Perl在被污染的数据上发现一个不安全的操作时,它会死掉--这意味着有人必须进入并决定它是什么意思 untaint,需要什么 regexp,应用程序才会可靠。

有些人喜欢不安全,可靠,低成本的( 现在) 到--安全,破坏,需要寻找开发者。 从长远来看,这并不是那么好。 但这并不罕见。

原作者:
0 0

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

在与数据库交互时,你可能不会考虑到污染数据。 幸运的是,DBI支持阻止被污染的数据进入你的数据库,它将来自你数据库的数据视为污染,这样你就不会做任何不安全的事情。 你必须特别打开这些选项;默认情况下它们是关闭的。 有关更多信息,请参阅文档

原作者:
...