无需合作方部署服务端脚本 如何识别用户来源并防脚本盗用?
技术实现方案
结论
完全可以在A、B两家公司无需部署任何服务端脚本的前提下实现你的两个需求,核心依赖浏览器跨域请求的原生特性即可完成。
基础实现方案(可直接落地)
- 核心原理:浏览器加载第三方脚本、以及脚本发起跨域API请求时,都会自动携带不可被前端JS篡改的
Origin请求头,值为当前站点的完整根域名。 - 你只需要在自己的Node.js服务端添加全局校验中间件,两步完成需求:
- 防盗用:收到
script.js的资源请求时,先校验请求头的Origin字段,仅允许https://CompanyA.com、https://CompanyB.com两个白名单域名的请求通过,其余域名直接返回403拒绝响应。就算C公司完整复制了script标签粘贴到自己站点,用户访问C站时请求脚本的Origin为C的域名,会直接被拦截,根本拿不到可运行的脚本代码。 - 站点识别:直接根据Origin的值即可判断当前请求来自A公司还是B公司,后续脚本调用你的服务端接口时,沿用同样的Origin校验逻辑也可以直接识别所属公司,无需额外传参。
- 防盗用:收到
增强防护方案(可选)
如果需要更高的安全性,可以搭配授权key机制进一步加固:
- 给A、B两家公司各分配一个和域名绑定的唯一授权key,让他们把script标签的引用地址修改为
<script src="myservice.com/script.js?appkey=对应公司的授权key"></script> - 服务端校验时同时匹配Origin和授权key,两者对应一致才返回脚本,就算某个公司的授权key不慎泄露,其他域名的站点拿着这个key请求也会被拦截,进一步降低盗用风险。
内容的提问来源于stack exchange,提问作者Ronnis
相关产品推荐
相关产品推荐

