打开Perl的taint模式

ZDNet软件频道 时间:2003-08-08 作者:ZDNet China |  我要评论()
本文关键词:
当打开taint模式时,Perl就会进行执行检查以确保你的数据未被taint,如果不安全的使用了被taint的数据,就会发出严重错误。
本文译自Builder.com,未经许可请勿转载满足下面两个条件的任何程序都会带来安全隐患:

1、该程序的输入数据来自外部数据源

2、该程序所调用sub-shell或者函数影响到该程序之外其它东西。

你可以用“-T”开关来打开Perl的taint模式。

当打开taint模式时,Perl就会进行执行检查以确保你的数据未被taint,如果不安全的使用了被taint的数据,就会发出严重错误。为了使你的数据不被taint,执行正则表达式来匹配数据并提取匹配部分。这样,你就必须描述出你所期望的数据的内容以及格式,并只接受符合这一要求的数据。

例如,假设你期望收到一个单词字符(word characters,即字母数字以及下划线)那么,下面的代码通过一个正则表达式(它只通过全部由单词字符组成字符串)会“蒸馏出”你的数据来:

if ( $data =~ /^(w+)$/ ) {
   $data = ;
} else {
  die "Error: tainted data found: $data ";
}



责任编辑:炒饭

欢迎评论或投稿


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134