ecshop修饰符preg_replace/e不安全的几处改动
主要集中在 upload/includes/cls_template.php 文件中:
1:line 300 :
原语句:
return preg_replace("/{([^}{ ]*)}/e", "$this->select("\1");", $source);
修改为:
return preg_replace_callback("/{([^}{ ]*)}/", function($r) { return $this->select($r[1]); }, $source);
2:line 495:
原语句:
$out = "<?php " . "$k = " . preg_replace("/("\$[^,]+)/e" , "stripslashes(trim("\1","""));", var_export($t, true)) . "; ";
修改为:
$replacement = preg_replace_callback("/("\$[^,]+)/" ,
function($matcher){
return stripslashes(trim($matcher[1],"""));
},
var_export($t, true));
$out = "<?php " . "$k = " . $replacement . "; ";
3:line 554: //zuimoban.com 转载不带网址,木JJ
原语句:
$val = preg_replace("/[([^[]]*)]/eis", "".".str_replace("$","$","\1")", $val);
修改为:
$val = preg_replace_callback("/[([^[]]*)]/is",
function ($matcher) {
return ".".str_replace("$","$",$matcher[1]);
},
$val);
4:line 1071:
原语句:
$replacement = ""{include file=".strtolower("\1"). "}"";
$source = preg_replace($pattern, $replacement, $source);
修改为:
$source = preg_replace_callback($pattern,
function ($matcher) {
return "{include file=" . strtolower($matcher[1]). "}";
},
1:line 300 :
原语句:
return preg_replace("/{([^}{ ]*)}/e", "$this->select("\1");", $source);
修改为:
return preg_replace_callback("/{([^}{ ]*)}/", function($r) { return $this->select($r[1]); }, $source);
2:line 495:
原语句:
$out = "<?php " . "$k = " . preg_replace("/("\$[^,]+)/e" , "stripslashes(trim("\1","""));", var_export($t, true)) . "; ";
修改为:
$replacement = preg_replace_callback("/("\$[^,]+)/" ,
function($matcher){
return stripslashes(trim($matcher[1],"""));
},
var_export($t, true));
$out = "<?php " . "$k = " . $replacement . "; ";
3:line 554: //zuimoban.com 转载不带网址,木JJ
原语句:
$val = preg_replace("/[([^[]]*)]/eis", "".".str_replace("$","$","\1")", $val);
修改为:
$val = preg_replace_callback("/[([^[]]*)]/is",
function ($matcher) {
return ".".str_replace("$","$",$matcher[1]);
},
$val);
4:line 1071:
原语句:
$replacement = ""{include file=".strtolower("\1"). "}"";
$source = preg_replace($pattern, $replacement, $source);
修改为:
$source = preg_replace_callback($pattern,
function ($matcher) {
return "{include file=" . strtolower($matcher[1]). "}";
},
$source);
原文地址:http://www.moke8.com/article-10688-1.html
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: Shell中获取单个文件大小
- 下一篇: MySQL里实现类似SPLIT的分割字符串的函数