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

Django如何获取网络标准时间而非本地PC时间?

解决本地时钟作弊的时间获取方案

核心原则

所有时间敏感逻辑(比如限时操作、有效期校验)必须依赖服务器端提供的标准时间,绝对不能用客户端本地时间做判断——客户端时间可被随意篡改,完全不可信。

具体实现方式

  • 从后端接口获取标准时间
    在需要用到时间的场景,调用后端提供的专属接口(比如/api/current-time),接口返回服务器的UTC标准时间或带时区的格式化时间。后端需确保自身时间同步(比如开启NTP服务),用服务器本地的可信时间生成返回值。
    示例Python后端代码:

    import datetime
    from flask import Flask, jsonify
    
    app = Flask(__name__)
    
    @app.route('/api/current-time')
    def get_current_time():
        utc_now = datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc)
        return jsonify({
            "utc_time": utc_now.isoformat(),
            "timestamp": utc_now.timestamp()
        })
    

    前端拿到返回的时间后,基于该时间完成后续逻辑,比如计算剩余时长、校验操作是否在有效期内。

  • 用时间戳签名做校验
    针对答题、抢购这类用户操作场景,后端可提前生成带有效期的时间戳签名,前端提交操作时需携带该签名。后端校验签名有效性时,完全以自身时间判断是否过期,全程不依赖客户端时间。

  • 彻底移除客户端本地时间依赖
    删除前端代码中datetime.datetime.today()或utcnow()这类获取本地时间的逻辑,所有时间相关的计算、判断均基于后端返回的可信数据。

额外注意事项

  • 服务器必须开启NTP时间同步服务,确保自身时间与网络标准时间一致。比如Linux系统用chrony或ntpd,Windows系统开启自动时间同步功能。
  • 若为纯前端应用,可请求第三方时间API,但存在依赖第三方服务、数据可能被篡改的风险,优先建议搭建自有后端服务提供时间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 18:32:21