Science for all





CGI输入

CGI输入

CGI输入其实是指定的一组环境变量和标准输入。这些值必须被证实。

一个额外的复杂情况是很多CGI输入采用所谓的“URL编码”格式提供,即某些值是以%HH的格式编写的,其中HH是相应字节的十六进制代码。你或着你的CGI库必须正确处理这些输入,先URL解码输入,再检查作为结果的字节值是否可以接受。必须正确处理所有的值,包括可能有问题的值,如%00(NIL)和%0A(换行)。不要对输入多次解码,否则诸如“%2500”的输入会被错误处理(%25会翻译成“%”,结果“%00”又会被错误地翻译成NIL字符)。

CGI脚本一般会受到包含特殊字符输入的攻击;参见上面的说明。

某些HTML表格包括客户端的检查,以去除某些非法值。这种检查对用户可能有些帮助,但对安全性毫无用处,因为攻击者可以直接向WEB服务器发送这样的“非法”字符。如下文说到的那样(在“只信任值得信任的通道”一节),服务器必须对所有输入进行自己的检查。