关于旧版UCHome中link.php的技术解析:
1. link.php的核心作用:
该文件是UCHome的链接路由中转站,主要承担三大功能:
- 安全过滤:通过base64解码+urldecode双重解析URL参数(如示例中的https%3A%2F%2F)
- 反恶意跳转:对目标域名进行白名单校验(配置在config_ucenter.php中)
- 流量统计:通过$_G['setting']['linklog']配置记录外链点击数据
2. 典型触发场景:
(1)用户生成内容模块:
- 日志正文中外链自动转换(通过parseurl函数处理)
- 分享模块的第三方资源引用
- 留言板中的URL自动识别
(2)社交互动模块:
- 好友邀请链接的二次跳转(如home.php?mod=invite)
- 个人主页的外部联系信息(如QQ空间链接)
- 活动报名页面的第三方报名入口
(3)系统级应用:
- 漫游应用(manyou)的API回调地址
- 第三方登录(如old版本QQ互联)
- UCenter Home的feed动态外链
3. 技术特征分析:
链接构造采用以下加密方式:
$url = base64_encode(_authcode($raw_url.'&'.TIMESTAMP, 'ENCODE', $_G['config']['security']['authkey']));
最终生成形如:/link.php?url=加密字符串&sign=签名校验码
4. 迁移建议:
如需在Discuz X系列中实现类似功能,可通过以下方式改造:
(1)使用route.php定义新路由规则
(2)在source/function/function_core.php扩展validate_url函数
(3)推荐采用DZX的插件机制重构,例如:
- // 插件示例代码
- Hook::add('output_replace', function($content) {
- return preg_replace_callback("/<a href="(http[^"]+)"/", 'parse_external_link', $content);
- });
复制代码
注:相关安全过滤机制可参考DZX的安全过滤模块(source/class/security/)中的url_validate类实现。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |