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

如何通过.htaccess配置禁止用户访问JSON文件仅允许站点AJAX调用?

JSON文件防盗用配置失效问题解决方案

原有配置失效原因

  • 你之前配置的allow from localhost规则,仅允许服务器自身的IP直接访问该JSON文件,但站点页面发起的AJAX请求是访问者的浏览器客户端发起的,请求来源是用户的公网IP,不属于服务器本机IP,自然会被规则拦截,导致自身站点的AJAX也无法正常加载数据。
  • 需要先明确一个基础逻辑:只要是前端AJAX可以正常获取的资源,用户理论上都可以通过浏览器开发者工具抓包获取,不存在100%完全杜绝用户拿到资源的方案,只能通过多层防护大幅提升盗用成本,以下是可落地的实现方式。

推荐实现方案(防护强度最高)

不要把JSON作为静态文件放在Web可直接访问的目录下,改用后端接口动态输出:

  • 将原有的.json文件移动到网站根目录之外的非Web访问路径,例如Linux服务器下的/opt/private_data/目录,外部用户根本无法通过URL直接定位请求到该文件。
  • 编写一个后端接口(例如路由地址为/api/fetch_config),接口逻辑为服务端直接读取上述私有目录下的JSON文件内容,再返回给前端请求。
  • 给接口增加多层校验规则提升盗用成本:
    • 校验请求的Referer头,仅放行来自你自身域名的请求,该规则可以拦截普通用户直接输入地址访问、低阶站点盗用的情况
    • 增加时效签名校验:页面渲染时由服务端生成一个有效期5-10分钟的随机token存入会话,前端发起AJAX请求时必须携带该token,服务端校验token合法才返回JSON内容,token过期自动失效,可大幅提升批量爬取盗用的成本
    • 增加IP请求频率限制,单IP短时间内请求次数超过阈值就直接拦截

备选方案(保留静态JSON文件的Apache配置)

如果你不想改动现有逻辑,一定要保留静态JSON文件的访问方式,可以替换原有.htaccess规则为基于Referer校验的配置,注意该规则防护强度弱于后端接口方案,Referer头可以被技术手段伪造:

<Files "你的目标json文件名称.json">
    Order Deny,Allow
    Deny from all
    # 匹配自身域名的Referer才放行,记得替换为你自己的域名
    SetEnvIf Referer "https?://(www\.)?your-domain.com/" allowed_request
    Allow from env=allowed_request
</Files>

该配置生效后,用户直接在浏览器地址栏输入JSON文件URL访问时,通常不会携带对应站点的Referer头,会被直接拦截;从你自己站点页面发起的AJAX请求会自动携带当前站点的Referer,可以正常访问。

重要提醒:不要在这类前端可获取的JSON文件中存放敏感信息,包括但不限于接口密钥、用户隐私数据、后台权限凭证,这类敏感数据必须存储在服务端,绝对不能输出到前端。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:54:18