You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带过期时间的PHP下载链接:如何识别下载请求来源?

检测下载链接点击者身份的可行方案

针对你提到的场景,有几种实用方法可以辅助判断下载请求是目标用户本人点击,还是链接被分享后他人点击:

  • 给链接添加用户专属绑定参数
    扩展你的数据表,新增user_identifier字段(存储用户ID的哈希值、邮箱哈希等唯一标识)。发送邮件时,在下载链接中附加这个专属参数,比如:

    /download?id=fsdhfs7dfsniuf92un3f2&user_hash=abc123xyz
    

    当收到下载请求时,校验链接中的user_hash和数据表中存储的对应值是否一致。如果不一致,即可判定为非目标用户点击。

  • 结合身份会话/一次性令牌验证
    如果你的系统有用户登录机制,可以让邮件中的下载链接先引导用户完成登录,验证身份后再允许下载;或者在链接中嵌入一个与目标用户绑定的一次性令牌,令牌有效期和下载链接过期时间同步,请求下载时校验令牌的归属和有效性,只有匹配的用户才能触发下载。

  • 对比请求上下文特征
    记录下载请求的IP地址、浏览器User-Agent等信息,同时在邮件发送后,通过邮件追踪像素(透明小图片)记录用户打开邮件时的上下文信息。当收到下载请求时,对比两组信息的匹配度:如果IP地区、设备类型高度吻合,大概率是本人点击;如果出现完全陌生的IP或设备特征,则可能是链接被分享。

    注意:这种方法是辅助判断,因为用户可能更换设备或网络,不能作为绝对依据。

  • 限制单链接的有效点击次数
    在数据表中新增click_count字段,默认值为0。每次下载请求成功后将计数加1,当计数超过设定阈值(比如1次)时,直接拒绝后续请求并标记链接为“已分享”。这种方法适用于仅允许用户本人下载一次的场景。

需要说明的是,没有100%绝对的检测方法——如果用户主动分享自己的账号或完整链接,以上手段可能失效,但能大幅提高非授权点击的检测准确率。

内容的提问来源于stack exchange,提问作者Toniq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 13:32:27