dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>PHP>php教程>文章内容
php正则问题
来源: 作者:

preg_match_all("/\{([^\{\}]+\(.*?\)[^\{\}]*)\}/s",$str,$tmp_array); $tmpstr=implode(' ',$tmp_array[1]); preg_match_all("/([a-zA-Z0-9_\x7f-\xff]+)\(/",$tmpstr,$tmp_array); $tmp_array=array_unique($tmp_array[1]); $funerr=0; if(is_array($tmp_array)){ foreach($tmp_array as $value){ if(substr($value,0,4)!='tag_'){ echo "$value
"; $funerr++; } }

$funerr && exit("该模板中调用了上述不允许的函数,模板编译失败!"); } 上面是代码,功能是检查 {模板标记} 中任何方式调用函数的函数名称是不是以 tag_ 带头。成功测试的方式有 {tag_cut();phpinfo()} {if $abc=1 phpinfo()} {loop phpinfo() $a} 想不出其他测试方式了,反正不管什么乱七八糟的调用方式,都能被检查出来! 模板中嵌入php代码在开始中用 $str=preg_replace("/\<\?.*\?\>/sU","",$str); 除去了。经本人多次测试,好像模板中是没有办法调用非 tag_为前缀的函数了。 欢迎大家继续测试!


上一篇:java foreach   下一篇:cookie防止仿造安全总结
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·Windows2003+Apache+mod_perl安
·cookie防止仿造安全总结
  相关文章
·cookie防止仿造安全总结
·Windows2003+Apache+mod_perl安
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763