网站首页站长博客下载中心域名交易站长论坛域名主机免费电邮免费域名中文排行排名查询站长书库书籍教程下载
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
学院首页 网络编程 网页设计 图形图象 数 据 库 服 务 器 网络媒体 网络安全 个人专栏 站长CLUB 业界新闻 信息公告
 当前位置:首页 >> 网络编程 >> CGI专区 >> 正文
公告通知
返回上级列表
资料搜索
相关文章
CGI教程(9)编写安全的CGI脚本
[ 来源:中国站长学院 | 作者:郁郁小蝎 | 时间:2005-4-12 10:28:23 | 浏览:人次 ]
收藏到新浪ViVi 收藏到365KEY 收藏到我摘  字号选择〖    〗/ 双击滚屏 单击停止  
编写安全的CGI脚本

  不管在什么时候,一个程序与网络客户端联系的时候,就有可能客户端会攻击这个程序以获得未授权的访问。即使是无恶意地看看你的脚本也会你的系统的完整型构成危险。出于这种想法,本节教程将教你编写安全的脚本以避免任何的攻击。

  首先要注意eval语句。PERL和Bourne shell语言为用户提供了一个eval命令,它允许你构造一个字符串并且有个注释器来执行这个字符串。这是一个不安全的隐患。我们来观察一下以下的语句,它是用Bource shell编写的:

eval `echo $QUERY_STRING | awk 'BEGIN{RS="&"} {printf "QS_%s\n",$1}' `

  这条语句将查询字符串转换未一系列的可变的设置命令。但是不幸的是,这个脚本可以通过发送给它一个以逗号”;”开头的查询字符串来攻击。看看这有多么的危险!

  其次,不要委任客户端做任何事情。一个品德好的客户端将会避免发送任何带有攻击性的查询字符串给Bourne shell,这样就会避免脚本错误解释字符串而导致一些不安全的事情。但是,”防人之心不可无”,对于哪些品德恶劣的客户端可能就会使用一些特殊的字符串来混淆你的脚本以获得未授权的访问。所以一定不要委托客户端做任何事情。

  还要十分注意popen()和system()的使用。如果你使用任何来自客户端的数据构造一个命令行来调用popen()或者system(),要确信在任何字符之前加一个反斜杆,因为这样会在调用函数之前给Bourne shell以特殊的意义。具体做法你可以利用简短的C函数来实现。

  最后,为了安全起见,关闭服务端附件(SSI)。如果很不幸,你的服务器支持SSI,那么请一定要为你的脚本目录关闭它!这个SSI可能被客户端滥用,他们可以偷看到他们发送的字符串直接输出的脚本。

  本脚本只是概括性质地介绍安全的措施,如果有知道关于安全和WWW的问题,你可以参见一些WWW安全常见问题文本(FAQ)。

[发送给好友]  [打印本页]  [关闭窗口]  [返回顶部]   转载请注明来源:http://edu.chinaz.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
栏目编辑: 设计风 责任编辑: 设计风
原始作者: 郁郁小蝎 录入时间: 2005-4-12 10:28:23
信息来源: 中国站长学院 投稿信箱: Edu#chinaz.com
设为首页 - 加入收藏 - 关于我们 - 广告服务 - 版权申明 - 友情链接 - 联系方式 - 总编信箱 - 会员投稿