窗体确认是一项基本操作,特别是建立一个网络窗体前端的时候。除了能够防止人工伪造的信息外,窗体确认还可以保证网络服务器的安全性,从而避免不怀好意的网络用户骚扰你的网站。如果你采用CGI
Perl来检测窗体数据,就可以很完整地测试你的软件项目。
相关的URL可以参见这里,你的程序也可以很方便地从这个站点得到。
避免产生错误窗体数据的第一步就是进行代码确认。如果窗体信息看起来很混乱,那么就不要让CGI代码执行这些信息。这一步能够完成如下功能:Apache服务器接收HTTP请求,CGI界面能够把窗体信息脱离化。
如果你的Perl CGI采用诸如CGI.pm的模块,会产生一些额外的预防性分析。然而,如果你检查这一模块,你会发觉这些分析其实是很基本的。百分之九十九的窗体确认是正确,但是有时候有错误生成时,你不会听到提示的信息,因为这些错误的数据报告很少量,你必须通过自己的确认代码来弥补这一空缺。
Perl和其他脚本语言与Tcl和JavaScript一样,都提供了变量类型之间很方便的转换方法。编译器也不会产生错误,这些方法与C/C++中类似,你会很快习惯这些转化方法。由于窗体数据要赋予这些变量,过多的使用方法也会影响数据的确认过程。让我们来看一看其中的原因。
Listing A (naive.cgi)显示了错误产生的根源。这一简单的代码实际上包含了很多的变量类型错误:匹配错误,没有初始化,没有定义等。如果你采用–w option来运行这一代码,你会看到很多错误及产生这些错误的原因。如果你去掉–w option,这些代码会正确地输出你所期望的值。
–w option只是Perl脚本的命令,功能很强大,但它也不能解决全部的问题,特别是对于从程序以外传递过来的数据。所以,如果没有很好地分析输入数据,脚本程序中的类型会发生冲突。