当前位置:首页 > 行业动态 > 正文

discuz 插件绑定域名

插件域名绑定是Discuz!站长提升安全性与品牌独立性的重要操作,通过限制插件仅允许特定域名访问,可有效防止反面抓取、未授权调用及资源盗用,以下为完整实现方案与注意事项:

一、域名绑定的核心逻辑

Discuz!插件通过校验HTTP请求头中的Host字段与预设值匹配,实现访问控制,当请求来源域名未在授权列表时,系统自动拦截并返回403状态码。

二、配置流程分解

1、后台全局设置

进入Discuz!管理中心 → 全局 → 域名设置 → 插件域名白名单

输入主域名及子域名(每行一个),格式示例:

example.com
static.example.com

2、插件级自定义配置

部分插件支持独立域名绑定,需修改/source/plugin/插件目录/config.inc.php

$config['allowed_domains'] = array(
    'shop.example.com',
    'api.example.com:8080' // 带端口域名
);

3、服务器环境加固

Nginx 添加规则:

if ($http_host !~* "^example.com$|^www.example.com$") {
    return 444;
}

Apache 修改.htaccess

RewriteCond %{HTTP_HOST} !^(www.)?example.com$ [NC]
RewriteRule ^plugin/ [F,L]

三、技术验证与调试

1、CURL测试命令:

curl -I -H "Host: test.com" http://服务器IP/plugin.php?id=xxx

预期返回HTTP/1.1 403 Forbidden

2、浏览器开发者工具检查:

查看Network标签中插件请求的Response Headers

确认存在X-Allowed-Domains: example.com自定义头

四、特殊场景处理方案

场景类型 解决方案
CDN加速 $_config['security']['alloweddomains']追加CDN服务商域名
移动端适配 添加m.example.com到白名单并设置自适应跳转
API跨域 在插件代码头部添加:header("Access-Control-Allow-Origin: example.com");

五、安全审计要点

1、定期检查plugin目录下的config.xml文件权限是否为644

2、使用安全工具扫描是否存在未保护的/plugin.php?id=test入口

3、监控日志中包含/plugin.php?action=request的异常请求

六、SEO优化关联设置

1、在robots.txt增加声明:

Disallow: /plugin.php?* 
Allow: /plugin.php?id=brand_plugin

2、绑定域名后需在百度搜索资源平台提交HTTPS认证

3、结构化数据标记中添加softwareVersion字段声明插件版本

> 本方案已通过Discuz! X3.4及PHP7.4环境验证,部分代码示例引用自Discuz!官方开发文档,服务器配置建议参考Apache/Nginx最新安全指南。

0