游客:
注册
|
登录
|
帮助
网友俱乐部
»
网络编程
»
CGI教程
» CGI编程的安全性 -- 文件名
网友生活网
|
网友学堂
如何获得金币?
诚招斑竹
IP归属地查询 PR查询 收录查询 whois查询
免费超短2级域名,your.jpy.cc
传世私服
|
传奇世界私服
注册亚洲交友中心,找个人来同居吧!
免费存储空间,免费网络硬盘
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
标题: CGI编程的安全性 -- 文件名
问天
元帅
UID 11493
精华
187
积分 34221
帖子 33355
威望 91
金币 13148
热心 2619
阅读权限 100
注册 2006-4-7
状态 离线
#1
使用道具
发表于 2007-2-20 11:31
资料
个人空间
主页
短消息
加为好友
CGI编程的安全性 -- 文件名
文件名是提交给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换码(特殊的代码),用于
表示每个字符而不使用该字符本身. 下面的代码通过全部用&;amp; lt;替换了小于符号
,用&;amp; gt;替换了大于符号,从而完成了转换:
$user-input="s/</</g;
$user-input="s/>/>/g;
网友
问天
签名 - 网友社区
请您回个帖。谢谢
PR查询
免费域名
免费空间
[广告]
免费域名(Free Subdomain)
免费空间(Free hosting)
PR查询(Google Pagerank)
投票
交易
悬赏
活动
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
个人空间管理
基本概况
流量统计
客户软件
发帖量记录
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计
当前时区 GMT+8, 现在时间是 2008-11-23 18:03
信产部ICP备案:
京ICP备05066424号
北京市公安局网监备案:1101050648号
Powered by
Discuz!
5.5.0
TOP
清除 Cookies
-
联系我们
-
网友俱乐部
-
Archiver
-
WAP