收藏本站 
广告服务 
网站地图 
>> 我们从网络和杂志上收集了近100000余篇各类电脑技术、网络技术、软件技术等方面的文章教程,我们的收录原则:不是精华拒不收录!
先飞电脑技术网技术文章
CGI编程的安全性 -- 文件名
[ 作者:佚名    转贴自:转载    阅读次数:1097    更新时间:2005-1-10 1:05: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;


上一篇:Perl语言的文字处理模式之一  下一篇: 在CGI中使用cookie的超简单方法!  

网站主页 | 收藏本页 | 联系我们 | 广告服务 | 站点地图 | 会员注册 | 招聘信息 | 内容指正

联系QQ:先飞电脑技术网站事务联系QQ,点击可以直接留言. 32933427 电话:13710542091 [世界排名] 鄂ICP备05005890号