discuz 插件绑定域名
- 行业动态
- 2025-02-08
- 1
插件域名绑定是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最新安全指南。