DedeCms 万能安全防护代码

softyun3年前cms教程78

为了让大家的CMS更安全,有需要的手工在config_base.php里加上
打开
config_base.php
找到
//禁止用户提交某些特殊变量
$ckvs = Array('_GET','_POST','_COOKIE','_FILES');
foreach($ckvs as $ckv){
if(is_array($$ckv)){
foreach($$ckv AS $key => $value)
if(eregi("^(cfg_|globals)",$key)) unset(${$ckv}[$key]);
}
}

改为下面代码
//把get、post、cookie里的<? 替换成 <?
$ckvs = Array('_GET','_POST','_COOKIE');
foreach($ckvs as $ckv){
if(is_array($$ckv)){
foreach($$ckv AS $key => $value)
if(!empty($value)){
${$ckv}[$key] = str_replace('<'.'?','&'.'lt;'.'?',$value);
${$ckv}[$key] = str_replace('?'.'>','?'.'&'.'gt;',${$ckv}[$key]);
}
if(eregi("^cfg_|globals",$key)) unset(${$ckv}[$key]);
}
}
//检测上传的文件中是否有PHP代码,有直接退出处理
if (is_array($_FILES)) {
foreach($_FILES AS $name => $value){
${$name} = $value['tmp_name'];
$fp = @fopen(${$name},'r');
$fstr = @fread($fp,filesize(${$name}));
@fclose($fp);
if($fstr!='' && ereg("<\?",$fstr)){
echo "你上传的文件中含有危险内容,程序终止处理!";
exit();
}
}
}

这样处理之后,安全上理论上可中做到一劳永逸,但缺点是使用此功能后,不能在线上传PHP文件,如果你的站点同时支持asp、aspx等,在此基础上修改一下上述代码即可

考虑到dede如果出现问题把损失减到最小,原本在高级支持区发的内容转移给大家共享

官方原帖:15538&2

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

织梦DEDECMS会员提示“数据校验不对,程序返回”问题的解决

如果本文介绍的“织梦DEDECMS会员中心"数据校验不对,程序返回"错误修改方法”对您有帮助,记得文末点赞哦!在会员中心发布商品或分类信息时时,直接报错:数据校验不对,程序返回 内容来自原因:memb...

DedeCMS V5.3 模板标签参考手册

DedeCMS V5.3 模板标签参考手册,手册方便用户制作模板、学习系统所编写,之前在织梦的帮助中心有相关的标签内容,这里我将其整理并且重新进行了一些编辑,为了方便大家使用,讲内容大包为CHM格式,...

【Field 标记使用实例】-DedeCMS模板制作使用实例教程(2)

【Field 标记】在封面模板、列表模板、文档模板的使用频率很高,实用。主要用来获得到系统变量的值或者路径,用法很灵活。可以直接展示数据,如调用position,得到栏目一 > 栏目二” 这样形...

让v5.01的搜索更准确一些

新版本的dedecms5.01更改了默认的搜索模式,所以大家都反映搜索出来的结果不准确。 大家如果认真看一下高级搜索里面的:关键字模式: 或 与 如果关键字超过3个,用默认的“或”搜索出来的结果将很不...

dedecms在plus目录调用当前模板head.htm,footer.htm方法

在织梦dedecms的plus文件夹里面有许多常用的模板的头部和尾部都是单独的写的,最简单的方法就是把默认模板的head.htm和footer.htm复制过来就行了,只是每次修改后又要再复制一次,为了...

【Pagebreak 标记使用实例】-DedeCMS模板制作使用实例教程(13)

【Pagebreak 标记】表示文档的分页链接列表。适用范围:仅文档模板。   通过调试了解其使用方法   我调试的方法是:   将templets\default\文件夹下的list_default...