Perl的污点模式有用吗?

Jua*_*nti 23 perl taint

perl -T
Run Code Online (Sandbox Code Playgroud)

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

ziy*_*iya 27

不止于此:)它会您成为一个安全问题之前解决它.它当然不是安全银弹......我们曾经在外部暴露的任何脚本(即任何mod_perl应用程序)中使用它(几年前我参与Perl项目),我们发现它非常有用,把它作为我们的政策.它做了一些检查,它很方便..(任何事情使事情自动化)

Perl安全性 - perlsec强烈建议:

强烈建议使用此标志[污点模式]用于服务器程序以及代表其他人运行的任何程序,例如CGI脚本.一旦启用了污点模式,它就会启动脚本的其余部分.

  • 污点模式是一种开发工具.它不会阻止或阻止安全问题.它会向您显示您遇到问题的地方,但它依赖于您正确处理它们. (6认同)
  • 这根本不是误导.污点检查不会增加您的安全性.我不是说不要用它.只是不要以为它会保护你.它只是告诉你应该考虑保护的地方.我见过很多"污点安全"程序仍然存在未经验证的输入相同的旧安全问题. (5认同)
  • @briandfoy ...通过臭名昭着的`$ safe = $ 1 if $ unsafe =〜/(.*)/` (3认同)

Gre*_*con 16

明确地!

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

  • 哈.如果你真的跑了那么你就是勇敢的.我可能要花3个小时才能按下回车键以确保-T在我的perl命令中. (10认同)
  • 反正也不会做任何事,`man rm`:`--no-preserve-root:不要特别对待'/' (3认同)
  • 也许他是用户无人管理的 (2认同)

bri*_*foy 13

Mastering Perl的"安全编程技术"章节几乎完全用于污点检查以及如何使用它.

许多人会告诉你它会保护你,但他们巧妙地说谎.它是一个开发人员工具,可以帮助您在代码中找到一些(只有一些)需要注意的地方.它不会解决您的所有安全问题.


Pau*_*aul 7

我认为在开发每个人都熟悉的新代码时,污点模式最有效.

如果你的其他人的代码编写得很糟糕,并且你在污点模式下运行它 - perl会死掉而不是执行污点规则是"不安全"的操作.

在污点模式perl中,一些孔被修补但不是全部.系统("$ unfiltered_user_input")将会死亡,但Perl仍然可以将$ unfiltered_user_input数据写入具有固定名称的文件(因为打印的污染数据被认为是'安全'),然后使用system()执行该文件.但没有什么可以检查一切.

在遗留应用上使用它有一个权衡.当Perl发现对受污染数据的不安全操作时,它将会死亡 - 这意味着有人必须进入并决定取消数据的意义,需要什么正则表达式,然后应用程序再次可靠.

有些人宁愿不安全,可靠,低成本(目前) - 安全,破碎,需要找到开发人员.从长远来看并不是那么好......但这并不罕见.

  • 还有污点警告(-t).他们警告同样的事情,但他们不会阻止你的计划.从遗留程序的那些开始. (10认同)