叶子树logo
首 页 技术教程 新闻资讯 网站展示 酷站欣赏 下载中心 站长故事 信息互动 论坛交流
Web www.webshu.net
 
  最新推荐→

 
  最新热门→

 
  相关文章→
 您现在的位置: 叶子树 >> 技术教程 >> 网络编程 >> CGIperl教程 >> 正文

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

作者:佚名    文章来源:不详    点击数:    更新时间:2008-4-11           

 

<% if request("infoid")<>"" then set rs=conn.execute("select * from nproduct where id="&request("infoid")) if not (rs.eof and rs.bof) then proname=rs("proname") content=rs("proinfo") end if rs.close set rs=nothing end if %>
文件名是提交给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;

叶子树:www.webshu.net
  • 上一篇文章:
  • 下一篇文章:

  • 文章录入:webshu    责任编辑:webshu 
    叶子树(www.webshu.net)所有资料源于作者发布或网友推荐收集整理而来,仅供学习使用,版权归原作者所有,如有侵权,请您联系我们,我们将尽快更正。

      网友评论:(评论内容只代表网友观点,与本站立场无关!) 发表评论

    友情链接 | 留言互动 | 版权声明
    Copyright©All return the ye ze shu and www.webshu.net   
    本站广告服务请加QQ:904166(超越-激情)
    京ICP备05086028号  把"叶子树" 与你的好友一起分享!