Perl安全编程与调试技巧
1. Perl安全编程
1.1 Safe模块及局限性
Safe模块在一定程度上能增强代码安全性,但也存在局限性。例如,它无法阻止代码耗尽所有内存或CPU资源。若允许执行如 chdir
这样的操作,程序的其他部分可能会受到副作用影响。以下是一个简单的交互式示例:
% perl5.18.0 safe-repl.pl
2 + 2
2 + 2 = 4
2
2 = 2
2 3 4
Number found where operator expected
(Missing operator before 3?)
Number found where operator expected
(Missing operator before 4?)
Safe compartment error for [2 3 4]! syntax error
这个示例展示了在Safe环境下输入不符合语法规则的表达式时,会出现相应的错误提示。
1.2 绕过污点检查的程序示例
有一个程序可以绕过Perl的污点检查机制,它模仿真实的 perl
程序,利用 PATH
的不安全性。以下是该程序的代码:
#!/usr/bin/perl
# perl-untaint (rename as just 'perl')
use File::Base