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

如何获取非用户设备侧的日期以规避篡改时间绕过访问限制

核心问题分析

你当前的实现存在两个可被轻易绕过的漏洞:

  • 时间校验依赖用户设备本地时间,用户修改系统时间即可绕过
  • 受限内容直接预置在HTML中仅通过display: none隐藏,用户无需修改时间,直接打开浏览器开发者工具修改元素样式即可查看内容

最优解决方案:服务端侧校验(完全规避篡改风险)

所有校验逻辑和内容下发都放在服务端处理,是唯一可以完全避免被绕过的方案:

  • 前端不预置任何受限内容,仅在需要时向服务端发起内容请求
  • 服务端使用自身的系统时间(不会被用户篡改)校验是否达到开放日期
  • 仅当时间符合要求时,服务端才返回受限内容;否则直接返回未到开放时间的提示

这种方案下用户无论修改本地时间还是调试前端代码,都拿不到未开放的内容,安全性最高。


折中方案:无服务端时使用公共授时接口获取可信时间

如果你没有可用的服务端资源,只能纯前端实现,可以通过调用公共网络授时接口获取标准时间,替代读取本地时间:

async function getValidCurrentTime() {
  // 调用公共授时接口获取标准时间戳,避免依赖本地时间
  const response = await fetch("公共授时接口地址")
  const timestamp = await response.json()
  return new Date(timestamp)
}

async function checkAccessPermission() {
  const openTime = new Date('2021-12-10').getTime()
  const currentStandardTime = await getValidCurrentTime()
  if (currentStandardTime.getTime() >= openTime) {
    // 校验通过后再动态插入受限内容,不要提前写在HTML中
    document.getElementById("result").textContent = "Open now!!!"
  }
}

注意:该方案仅能降低被绕过的概率,极端情况下用户仍可通过抓包篡改授时接口返回结果绕过校验,不适合对安全性要求高的场景


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:45:00