|
windows已经很早就支持了.cgi程序,为了使用perl,又能够兼顾系统的安全性,我们一般都把.pl和.cgi用perlis.dll来解释,以前使用一直很正常,然则到了windows2008下,却又出了新的问题了,下面我们来详细了解下:
比如我们在已经配置好了perl: 在windows2003 和windows2000下,iis6 和iis5,我们使用的解释器是perlis.dll,使用测试代码:
程序代码 #!/usr/bin/perl print "Content-type: text/html\n\n"; print "hello world"; exit;
通过访问页面可以得到这么一段代码:
hello world
在windows2008下iis7,我们也使用解释器perlis.dll,使用测试代码相同,可是得到的页面显示是:
Content-type: text/html hello world
,说实话,这个问题我折腾了很久,于是有人开始质疑了,,为什么不直接使用perl.exe来解释呢? 我想这里面的安全问题不是这里要讨论的主题,就不说太多,最简单的注入问题这个perl.exe就无法检测避免,
下面我们使用perl.exe来作为解释器进行测试, 在windows2003 和windows2000下,iis6 和iis5,我们使用的解释器是perlis.exe,使用测试代码:
程序代码 #!/usr/bin/perl print "Content-type: text/html\n\n"; print "hello world"; exit;
通过访问页面可以得到这么一段代码:
hello world
在windows2008下iis7,我们也使用解释器perlis.exe,使用测试代码相同,可是得到的页面显示是:
hello world
正常,也就是说,在windows2008系统中的iis7情况下,必须使用perl.exe才能正常访问页面。
因此我们无奈的把window2008下使用到cgi 的用户的 headler mappings里面的.cgi 设置成 \perl\bin\perl.exe "%s "%s ,情势所逼,为了用户,值得放弃部分安全。
e网科技转载
|