【发布时间】:2011-11-12 03:49:44
【问题描述】:
我是 Perl 脚本的新手,遇到了一些麻烦。我有一个将一些数据传输到 CGI 脚本的 HTML 表单。但是,它似乎正在使用最旧版本的 CGI 脚本而不是最新版本。可能是因为下面的 perl 脚本中有错误吗?我尝试使用调试器,但我不知道如何使用它来执行我的脚本,更不用说从命令行传递我需要的参数了。 感谢您的帮助!
#!/usr/bin/perl
use CGI;
use CGI::Carp qw(fatalsToBrowser);
$q = new CGI;
print $q->header;
$q->start_html('Finger User');
$q->h1('Finger User');
print "<pre>";
$user = $q->param("user");
print `/usr/bin/finger/ -s $user~`;
print "</pre>";
print $q->end_html;
【问题讨论】:
-
在命令行中运行你的脚本,看看会发生什么。
-
是的,我想,我不清楚这是我试图做的,但我不能这样做,因为我无法将用户参数传递给它。
-
@tpar44:是的,你可以,见perldoc.perl.org/CGI.html#DEBUGGING
-
附言。由于您没有验证
user参数,因此您的脚本存在巨大 安全漏洞。 (想想如果我传入“用户名”nobody; rm -rf .;会发生什么。)我建议只允许匹配/^[a-z][-a-z0-9]*$/i的用户名。 (正则表达式复制自this question。) -
是的,这就是我得到剧本的那本书的意义所在。不过我想尝试一下,这样我就可以让它更安全,而不是相信他们的话。