centos 我的CGI Script有什么问题?

uurity8g  于 2022-11-29  发布在  其他
关注(0)|答案(1)|浏览(102)

我还是一个新手,我试着在我的Apache服务器上运行这个CGI脚本。当我进入网页时,我得到的只是一个空白页面。我做错了什么?

#!/usr/bin/perl 
use CGI qw(:standard);
print"Content-type: text/html \n\n";
$cost=param('cost');
$num=param('number');
$rev=param('revenue');
$avg = $cost/$num;
$avg=sprintf("%.2f",$avg);
$gp = $rev - $cost;
print "Project Cost Last Year was  \$ $cost .<p>"; 
print "We completed $num projects during the year."; 
print " That works out to an average of \$ $avg cost per project.";
print "<p>Our annual project revenue was \$ $rev <br>";
print "We made a gross profit of \$ $gp \n";

这是我当前的脚本代码。我已经确保我的文件也是可执行的。

gkl3eglg

gkl3eglg1#

我使用的URL是192.168.1.49/cgi-bin/cgi.cgi
我想你是指http://192.168.1.49/cgi-bin/cgi.cgi
对于给定的请求URL,您希望下面的内容发生什么情况?

$cost=param('cost');
$num=param('number');
$rev=param('revenue');
$avg = $cost/$num;

由于没有为number参数提供值,因此$numundef,在$avg = $cost/$num;中被视为零。
被零除会让CPU很伤心。
"你应该自己想清楚"
类似这样的异常可能会导致服务器返回HTTP状态500。这表示您应该阅读错误日志,在错误日志中会发现以下消息:

Illegal division by zero at [filename] line 7.

如果正常使用use warnings;,也会收到以下错误:

Use of uninitialized value $num in division (/) at [filename] line 7.
Use of uninitialized value $cost in division (/) at [filename] line 7.
  • 始终 * 使用use strict; use warnings;
    • 您的代码存在重大安全错误。**

具体来说,您的代码存在code injection错误,这些错误很容易被利用进行跨站点脚本攻击和url重定向攻击。
HTML中包含的文本需要转换为HTML。

相关问题