为啥我的 Perl 程序在一台机器上得到污染警告,而在另一台机器上却没有?

Posted

技术标签:

【中文标题】为啥我的 Perl 程序在一台机器上得到污染警告,而在另一台机器上却没有?【英文标题】:Why does my Perl program get a taint warning on one machine but not another?为什么我的 Perl 程序在一台机器上得到污染警告,而在另一台机器上却没有? 【发布时间】:2010-02-17 14:31:10 【问题描述】:

我们办公室有两台机器用作网络服务器。两者都运行 Perl 5.10.0。我们安装了一个开源票务系统 OTRS,在一台机器上它运行得非常好,但在另一台机器上我们收到了错误

Insecure dependency in require while running with -T switch.

我很困惑为什么在两台机器上安装了两个相同的 Perl 后一个运行良好而另一个却没有。我想知道这是否可能是系统级别的东西? 软件安装相同。任何意见,将不胜感激。 尼基

【问题讨论】:

首先要检查的地方:shebang 线是否相同?其次,如果您使用的是mod_perl,是否在机器上的一个httpd.conf 或任何包含的.conf 文件上启用了污点模式,而不是在另一台机器上? 当人们在这种情况下说“相同”时,它自动意味着“不相同”。你看到不同的行为告诉你有些东西是不同的,因此不完全相同。 :) 我将从比较环境变量开始。从手册页中,您会看到 taint-mode 对您通常不会考虑的不安全环境变量非常敏感。 【参考方案1】:

您可以阅读 Perl 的 taint mode。我怀疑在一台机器上启用了污染模式,而在另一台机器上未启用。

【讨论】:

以上是关于为啥我的 Perl 程序在一台机器上得到污染警告,而在另一台机器上却没有?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 django sqlite3 数据库在一台机器上与另一台机器上的工作方式不同?

在其他机器上得到 404,为啥?

为啥谷歌播放商店稳定性报告说我的应用程序在一台设备上崩溃了[重复]

可以将 perl 模块从一台 Linux 机器复制到另一台机器吗?

程序在一台机器上编译,但不在另一台机器上编译

为啥 STDIN 会导致我的 Perl 程序冻结?