设为首页
联系站长
加入收藏

您的位置: 首页>>IT业界>>互联网>>正文
 CGI编程的安全性 -- 文件名
 日期:2005-7-27 15:13:54  来源:100down.com
文件名是提交给CGI脚本的一种数据,但如果不小心的话,却能导致许多麻烦. 想要
打开一个用户提供的名字的文件时,都必须严格检查这个文件名以免招至系统重
要文件泄露. 用户输入一个文件名,有可能就试图打开输入危险字符串! 例如,用
户输入的文件名中包含路径字符,如目录斜杠和双点!尽管你期望的是输入公用的
文件名:例如report.txt.但结果却可能是/report.txt或../../report.txt ,系统
中所有文件就有可能泄露出去,后果是可想而知的.

如果用户输入一个已有文件名或对系统的运作有很重要的文件件名!比如输入的文
件名是/etc/passwd,那用户就可以对该文件任意修改.可能第二天登录网站时进行
更新的时候,你就发现密码被别人修改了,那时你只有写信给系统管理员请求帮助
了. 所以在编写CGI脚本时要保证所有字符都是合法的.
下面这段代码能把不合法的字符过滤掉.

if(($file-name=~/[^a-zA-Z-.]/)||($file-name=~/^./))
{ #文件包含有不合法字符. }

最好将上面代码做为一个子程序,这样就可以重复地调用它这样也方便于修改. 对
于不允许输入HTML下面有两个方案.

1、有种简单的方法就是不允许小于号(<)和大于(>)因为所有HTML语法必须包 含
在这两个字符间,如果碰到它们就返回一个错误是一种防止HTML被提交的简单的
方法. 下面一行Perl代码快速地清除了这两个字符:

$user-input=~s/<>//g;

2、复杂一点的方法就是将这两个字符转换成它们的HTML换码(特殊的代码),用于
表示每个字符而不使用该字符本身. 下面的代码通过全部用& lt;替换了小于符号
,用& gt;替换了大于符号,从而完成了转换:

$user-input=~s/</</g;
$user-input=~s/>/>/g;

相关文章

·PERL5中怎样找到一年中的星期和一
·将Perl文件的属性设成777是什么意
·CGI 安全问题
·Perl CGI编程安全点滴
·windows下Perl开发环境的安装和配
·本机调试Web应用程序的几种方法
·如何安装DBI和DBD包
·如何在Windows NT 4.0下安装Acti
·WIN9X系统下调试LINUX操作系统下
·在 linux 系统下安装 perl


阅读排行

·Win 2000不能访问Win XP的原因及
·解析Windows中的帐户和权限功能
·如何共享Windows XP操作系统
·Windows XP Service Pack 1
·通过 Windows XP 注册表自定义您
·Windows 2000 TCP/IP协议概述
·Windows 2000 Server TCP/IP协议
·dos常用命令使用说明
·Windows变慢原因分析及解决方法(
·Windows变慢原因分析及解决方法(
·WINXP下强行关闭“杀”不了的进程
·Windows XP系统注册表的恢复

最新文档

·创业激情需冷静 网络代理选择应理
·域名交易平台亟需规范 预防域名买
·Travel旅游域名即将引发抢注潮 
·从原理深处分析如何预防arp攻击
·突破建站弊端 企业网络营销大有可
·如何区分进程和病毒?
·java的基础知识,如何学好java
·微机原理与接口技术基础知识
·如何解决青少年沉迷网络的问题,
·全面分析主板BIOS报警信号

请您注意:
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·您在本站发表的作品,本站有权在网站内转载或引用
·其他网站如果需要转载 本站文章请在贵站著名来源,谢谢合作