前置准备
操作前先完成2项准备,避免配置错误导致站点故障:
- 备份全站文件,重点备份
/include/目录、所有plus入口文件
- 备份全站数据库,可直接在织梦后台-系统-数据库备份/还原操作
- 适用范围:织梦V57 UTF8/GBK全版本,其他版本逻辑一致可参考
第一步:全局参数过滤配置
1.1 新增通用XSS过滤函数
找到/include/common.func.php文件,在文件末尾的?>之前插入以下可直接复用的过滤代码:
```php
function dede_xss_clean($str) {
// 移除空字节注入风险
$str = str_replace("\0", '', $str);
// 全局转义HTML实体,避免标签解析
$str = htmlspecialchars($str, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
// 过滤所有危险主动执行标签
$pattern = '/<(script|iframe|link|meta|style|object|embed|svg|on\w+)[^>]>/i';
$str = preg_replace($pattern, '', $str);
// 过滤伪协议执行风险
$str = preg_replace('/(javascript|vbscript|data):/i', '', $str);
return trim($str);
}
```
1.2 全局变量自动过滤
找到/include/common.inc.php文件,定位到//检查和注册外部提交的变量注释的下方,插入以下代码:
```php
// 全局XSS过滤 排除后台文章编辑器content字段
$filter_except = array('content');
$request_arr = array('_GET', '_POST', '_COOKIE');
foreach($request_arr as $req) {
foreach($$req as $key => $val) {
if(!in_array($key, $filter_except)) {
if(is_array($val)) {
foreach($val as $k => $v) {
${$req}[$key][$k] = dede_xss_clean($v);
}
} else {
${$req}[$key] = dede_xss_clean($val);
}
}
}
}
```
注意:如果你的后台目录不是默认的/dede,需要在过滤逻辑前增加后台路径判断,避免影响后台其他功能使用
第二步:前端提交入口专项防护
2.1 会员投稿入口防护
找到/plus/contribute.php、/member/article_add.php、/member/article_edit.php三个文件,在接收提交参数的位置,对所有非content字段新增过滤,示例代码:
```php
$title = dede_xss_clean($title);
$writer = dede_xss_clean($writer);
$source = dede_xss_clean($source);
$description = dede_xss_clean($description);
$tags = dede_xss_clean($tags);
```
2.2 交互入口防护
找到/plus/feedback.php(评论)、/plus/guestbook.php(留言板)两个文件,所有用户提交的字段(用户名、内容、联系方式等)全部套入dede_xss_clean()过滤,不设置任何例外字段。
2.3 搜索入口防护
找到/plus/search.php文件,定位到搜索关键词$q的定义行,新增过滤:$q = dede_xss_clean($q);,同时搜索结果页模板的{$q}输出不要做任何反转义处理。
第三步:路径与权限加固
3.1 修改默认后台路径

直接将根目录下默认的/dede目录重命名为6位以上的随机混合字符串,比如dede_7x2k9z,禁止使用admin、manage、houtai等常见名称,避免被暴力枚举。
3.2 限制后台访问IP
如果是Nginx服务器,在站点配置的server块中插入以下配置:
```nginx
location ~ ^/修改后的后台目录名/ {
allow 你的办公固定公网IP;
allow 127.0.0.1;
deny all;
}
```
如果是Apache服务器,在后台目录下新建.htaccess文件,写入以下内容:
```apache
Order Deny,Allow
Deny from all
Allow from 你的办公固定公网IP
Allow from 127.0.0.1
```
3.3 关闭未使用的风险入口
如果不需要使用会员、投稿、留言板功能,直接在后台-系统-系统基本参数-核心设置中关闭对应功能,同时直接删除/plus目录下的contribute.php、feedback.php、guestbook.php三个文件,从源头关闭风险。
第四步:补丁与日常巡检配置
4.1 安装官方最新补丁
直接访问织梦官方补丁页下载对应版本补丁:http://updatenew.dedecms.com/base-v57/ ,下载后直接覆盖到站点对应目录即可。
4.2 上传目录权限加固
所有用户可上传的/uploads目录必须设置禁止执行PHP脚本权限,Nginx配置如下:
```nginx
location ~ ^/uploads/.\.(php|php5|phtml)$ {
deny all;
}
```
Apache服务器在uploads目录下新建.htaccess文件,写入:
```apache
Order Allow,Deny
Deny from all
```
4.3 日常巡检规则
- 每周检查一次后台访问日志,排查陌生IP访问记录
- 每周扫描一次uploads目录,排查是否存在php、js、html等非媒体格式文件
- 每月更新一次官方补丁,避免已知漏洞被利用
- 如果发现被攻击,先断网回滚到最近备份,用D盾扫描全站排查后门,D盾官方下载地址:http://www.d99net.net/
配置验证方法
完成所有配置后做3项测试,全部通过则配置生效:
- 在站点搜索框输入
提交,没有弹出弹窗,只显示转义后的纯文本即生效
- 在投稿/评论框输入
提交,内容中没有iframe标签即生效
- 在uploads目录上传一个测试php文件,浏览器直接访问返回403错误即权限配置生效