[摘要]awk 'BEGIN{RS="&"} {printf "QS_%s\n",$1}' ` 这条语句将查询字符串转换未一系列的可变的设...
awk 'BEGIN{RS="&"} {printf "QS_%s\n",$1}' `
这条语句将查询字符串转换未一系列的可变的设置命令。但是不幸的是,这个脚本可以通过发送给它一个以逗号”;”开头的查询字符串来攻击。看看这有多么的危险!
其次,不要委任客户端做任何事情。一个品德好的客户端将会避免发送任何带有攻击性的查询字符串给Bourne shell,这样就会避免脚本错误解释字符串而导致一些不安全的事情。但是,”防人之心不可无”,对于哪些品德恶劣的客户端可能就会使用一些特殊的字符串来混淆你的脚本以获得未授权的访问。所以一定不要委托客户端做任何事情。
还要十分注意popen()和system()的使用。如果你使用任何来自客户端的数据构造一个命令行来调用popen()或者system(),要确信在任何字符之前加一个反斜杆,因为这样会在调用函数之前给Bourne shell以特殊的意义。具体做法你可以利用简短的C函数来实现。
最后,为了安全起见,关闭服务端附件(SSI)。如果很不幸,你的服务器支持SSI,那么请一定要为你的脚本目录关闭它!这个SSI可能被客户端滥用,他们可以偷看到他们发送的字符串直接输出的脚本。
本脚本只是概括性质地介绍安全的措施,如果有知道关于安全和WWW的问题,你可以参见一些WWW安全常见问题文本(FAQ)。
关键词:CGI图文详细教程(9)编写安全的CGI脚本