CGI教程(10)CGI 规范之三

CGI 规范

CGI命令行选项规范

命令行只用在ISINDEX查询的情况。它不使用在HTML表单或者任何没定义的查询类型中。服务器应该为一个没有编码的=字符搜索信息来决定是否命令行被使用了,如果它发现了,命令行就不使用。这个就委托客户端在ISINDEX查询中编码等于号,这个被认为是安全的。

下面举个例子,使用网络命令和ISINDEX界面来观察"httpd"。你将会看到脚本会自动利用/cgi-bin/finger?httpd来调用它本身并且将会在命令行执行"finger httpd" ,还会为你输出结果。

如果服务器没有在QUERY_STRING找到"=" ,那么命令行不会被使用,任何的解码也没有被执行。这个查询利用适当的FORM提交解码器来维持于处理的联系。同时,作为一个例子,可以为提交"httpd=name"使用超级连接到网络指令脚本。因为QUERY_STRING包含了一个未编码的"=",所以没有被解码,这个脚本不知道它提交了一个有效的查询,而只是给你一个缺省的网络指令表单。

如果服务器发现它因为内部限制(比如exec()或者/bin/sh命令行限制)儿不能发送字符串,服务器应该包含NO命令行信息并且提供没有解码的查询信息在环境变量QUERY_STRING中。

Published At
Categories with Web编程
Tagged with
comments powered by Disqus