动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
  
   Cgi/Perl → 阅读文章

 CGI编程的安全性 -- 文件名

作者来源: 
阅读 1727 人次 , 2006-3-29 4:01:00 

文件名是提交给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;

 本文Tags安全  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:将Perl文件的属性设成777是什么意思
· 下一篇:CGI 安全问题
· 基于ODBC的通用数据库管理程序
· 用Perl制作留言本实例之二
· perl中的日期处理
· 用Perl语言进行Socket编程之四
· Perl教学 第一篇 概述


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077