|
河北 金顺福 李永强 CGI(COMMOM GATE INTERFACE)是外部应用程序与WEB服务器 交互的一个标准接口。CGI应用程序可以完成客户端与服务
器的交互操作。例如:一个能够访问外部数据库的CGI程序 可以使客户端用户通过WEB服务器进行数据库的查询。 传统的WEB浏览方式均为单向,CGI的出现提供了交互访问能
力,使得INTERNET漫游更生动更实用,因此在我们编写出一 个CGI程序后,一定会倍感欣慰,但是INTERNET的宗旨是面向 每个人的,任何人可在任何时候任意多次通过INTERNET访
问某WEB服务器,而这些特性又会给INTERNET带来安全上的 问题。网上存在一些出于好奇心或者心怀叵测的人会想出各 种办法进攻别人的系统,这些人就是所谓的网上"黑客"
在编写CGI程序时应尤其注意安全问题。 几乎所有的CGI漏洞均来自与用户的交互,这种交互性在给 主页带来活力的同时,成为WEB服务器的一个潜在危险。具
有破坏性的数据可以从多种渠道进入WEB服务器,客户端可以 设计自己的数据录入方式,数据内容,然后调用服务器端的 CGI程序。
例如:客户端用户编写以下HTML程序: ENTER your name, first and last:
在这里客户端用户很容易将服务器的地址和CGI程序写进来, 然后用户可以任意修改要传递的参数,假设服务器端的CGI程序 对输入数据不进行严格检查,这些数据就会进入服务器端的数据库,
而长度可以任意由客户端用户设定。还有一些别有用心的"黑客" 冒充"忠实"的客户端用户把上面的数据传送给CGI程序,假如CG程 序没有查觉,后果便很难想象,起码的结果是系统"死机"甚至可
能瘫痪。"黑客"可以使用各种方式侵扰服务器系统,那么究竟应 如何防止这些数据的入侵呢? 首先服务器应对输入数据的长度有严格限制,在使用POST
方法时,环境变量CONTENT-LENGTH能确保合理的数据长度, 对总的数据长度和单个变量的数据长度都应有检查功能; 另外,GET方法虽可以自动设定长度,但不要轻信这种方法,因为客户
可以很容易地将GET改为POST。
CGI程序还应具有检查异常情况的功能,在检查出陌生数据后CGI 还应能及时处理这些情况。CGI在增加上这些功能后,很可能变得很繁琐。 在实际应用当中还要在程序的繁琐度和安全性上折衷考虑。
"黑客"还可以想出其他办法进攻服务器,比如以CET和POST以外的方 法传输数据,通过改变路径信息盗窃传统上的密码文件/etc/passwd,
在HTML里增加radio选项等等。总之,"黑客"的手段多种多样, 在编写CGI程序时一定要严加防范,防止"黑客"的侵扰。 INTERNET的开放性肯定会带来一些安全问题,如何处理好开放性和
安全性的关系是一个贯彻始终的问题,不会有一蹴而就的方法出现, 只有在使用中不断积累经验,总结教训,才能最大程度地发挥 INTERNET的开放性及CGI的灵活性,安全上又有起码的保证。
|