《CGI中的网络安全1154.docx》由会员分享,可在线阅读,更多相关《CGI中的网络安全1154.docx(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、CGI中中的网络安全全CGI的的全称是是Commmonn Gaatewway Intterffacee,即通通用网关关接口,是是外部程程序和HHTTPP服务器器进行信信息交互互的一种种标准,当当前的版版本是CCGI/1.11。由于于它是实实时执行行的,所所以它返返回的信信息也是是动态的的,它也也是当前前网络上上应用最最广的WWeb应应用,它它既可以以使用CC,Paascaal等编编译型语语言,也也可以使使用Peerl,PPHP等等解释型型语言来来。CGI是是可执行行的,也也就是说说是让别别人在你你的服务务器上运运行程序序的,这这当然不不是很安安全的。所所以在使使用CGGI之前前要做充充分的安安
2、全准备备工作。首首先它们们必须处处于特定定的目录录(一般般情况是是/cggi-bbin/),以以便于服服务器去去执行它它们而不不是简单单的返回回给浏览览器。这这个目录录应该直直接置于于管理员员管理之之下,用用户编写写的程序序必须由由管理员员来设定定。编译过的的程序一一般比解解释执行行的程序序有更高高的安全全性,首首先用户户不可能能取得你你的源程程序,尽尽管一个个正确配配置的服服务器是是不会返返回源程程序,但但是泄漏漏源程序序的可能能总是存存在的,一一旦你的的源程序序被Haackeer们所所熟知,那那么就越越容易被被人攻破破。(例例如,你你用一个个编辑器器修改了了程序,那那么这个个编辑器器会留下
3、下一个备备份,此此时用户户就可以以通过htttp:/sservver/*.ccgi来得到到你的源源程序),当当然,在在网上可可以找到到很多CCGI的的C的源源程序,即即便是编编译过的的程序也也不一定定是百分分之百保保险的。使使用编译译过的程程序另外外一个好好处是,无无论是PPERLL或者PPHP或或者别的的解释器器它们都都是包含含着很多多Bugg的,这这些Buug无论论我们知知道或者者不知道道,它们们都在那那里。第第三个好好处就是是解释性性语言都都是调用用系统命命令并返返回值的的,这样样很容易易给不怀怀好意者者输入特特定的字字符串来来攻击你你的系统统。但在在C程序序中,要要想通过过发送特特定字
4、符符串来执执行Shhelll命令几几乎是不不可能的的。当然然在C程程序也存存在着很很多由于于设计者者原因所所造成的的可以被被攻击的的地点。新新版本的的解释器器也往往往修正了了很多BBug,并并提供了了很多捕捕捉安全全漏洞的的工具。不要轻易易使用从从网上得得到的SScriipt,越越复杂的的程序中中包含的的漏洞可可能性越越大;其其次确认认这个程程序是否否读写本本机的文文件,如如果读写写的话可可能会给给服务器器的文件件带来不不可预测测的损失失;再次次查看是是否使用用了本机机的程序序,若是是的话容容易被人人利用来来搞破坏坏;再看看是否以以suiid权限限运行,这这对系统统是非常常危险的的;最后后看程
5、序序是否检检测用户户的输入入,检测测输入是是保证系系统安全全的一个个必备的的步骤。如果在开开发工程程中,那那么绝对对不要让让别人知知道你的的主机,如如上所述述,此时时程序最最有可能能泄漏出出去(尽尽管不一一定是最最新的);其次一一定不能能假设用用户输入入了多少少内容,如如下面一一个例子子:#inccludde #inccludde stattic chaar qquerry_sstriing10224;charr* rreadd_POOST() iint queery_sizze; qquerry_ssizee=attoi(gettenvv(CCONTTENTT_LEENGTTH); ffre
6、aad(qquerry_sstriing,queery_sizze,11,sttdinn); rretuurn queery_strringg; 如果用户户输入的的内容超超过了110244个字节节,内存存越界一一般会造造成程序序异常中中止,在在某种情情况下可可以使HHackker从从远程运运行本机机的程序序,这也也是攻击击的常用用手段,应应该动态态的分配配内存。跟跟溢出有有关的是是,绝对对不要使使用sttrcppy类的的函数,这这类函数数直接拷拷贝知道道碰到NNULLL,而应应该用sstrnncpyy类的函函数,确确定不会会发生越越界错误误。最重重要的一一点是,千千万不能能在不检检查用户户输入
7、的的情况下下直接把把它传递递给系统统程序。尤尤其在攻攻击中,最最常用的的是包含含&;|*?()$nrr这些特特殊字符符,一定定要滤掉掉这些字字符。在CGII中,永永远不要要用相对对路径来来执行程程序,例例如syysteem(ls -l /loocall/weeb/ffoo),应应该改为为sysstemm(/binn/lss -ll /llocaal/wweb/fooo);如果必必须使用用相对路路径,那那么在执执行前应应该就该该环境变变量,如如puttenvv(PPATHH=/bbin:/ussr/bbin:/ussr/llocaal/bbin)。使用接口口来调用用CGI有利有有弊,用户只有有通
8、过接口口才能调用用CGII,由于以往往Serrverr执行CGGI时是以Seerveer的Useer IID(“nobbodyy”)运行的的,这样管理理员很难难定位错误误,而通过接口口CGII只能以某个用户户的ID来运行,这样不至至于对系统造成成致命的破坏,事情是相相对的,由于CGGI有某个用户户的ID,那么就可可以通过过这个程序序来删除该用用户的文件或者者给该用户户设置木马马。不要迷信信限制某些些IP或者者用户才能能使用CGGI能够够解决问题题,因为你不能够够控制这个个CGII程序怎么么被调用。因为一个个CGII程序可以以被任意意的表单调用用,或者干脆脆直接输入入URLL,永远不要要假设程序
9、序只被你你写的表单调用用,在执行之之前一定定要检查参数数。用户不能能修改隐藏藏域中的值,这个看法法也是错误误的,当HTMML文件件传到客户户端的时候,用户可以以简单的修改它,然后把他们想想要的数据发送送给你,所以信任任隐藏域。使用Poost方方法可以以更安全全?当然,Posst数据据不会出现现在URRL中,但是从安安全角度度来讲,他们的安全系数数都是一样样的,监听Poost消消息和Gett消息是一一样容易易的。不要使用用Coookiee来存放放重要的信息,如密码等,尽管可以以对Coookirr进行加密密,但是对于于冒名顶替替者来说,他们本身身并不关心心这些,只要能够够假冒别人人的ID就有可能对网站造成成致命的破坏。