我有一个 JavaScript 脚本,我想把它卖给我的客户。问题是脚本不需要进行现场更改,因此他们可以简单地链接到脚本并获得好处 - 这是一个用于 Analytics 的自动标记和转换设置类型脚本,已经投入了大量工作。
有没有办法只允许网站看到脚本?因此,如果有人去那里,那将是 403。我尝试使用 htaccess 并允许从服务器 IP 访问,这当然行不通...
我有一个 JavaScript 脚本,我想把它卖给我的客户。问题是脚本不需要进行现场更改,因此他们可以简单地链接到脚本并获得好处 - 这是一个用于 Analytics 的自动标记和转换设置类型脚本,已经投入了大量工作。
有没有办法只允许网站看到脚本?因此,如果有人去那里,那将是 403。我尝试使用 htaccess 并允许从服务器 IP 访问,这当然行不通...
您的意思是区分代码是由嵌入或嵌入其中的页面请求的,对吗?
您可以依赖的唯一设置是 http-header “Referer”。这样,您还可以将脚本限制为仅包含在域www.example1.com上的文档中,而不包含在www.example2.com上。
这是此页面上对 GoogleAnalytics 脚本的请求:
GET /ga.js HTTP/1.1
Host: www.google-analytics.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:21.0) Gecko/20100101 Firefox/21.0
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://stackoverflow.com/questions/16687926/allowing-only-certain-servers-websites-connect-to-script
Connection: keep-alive
但是,如果有人知道您的“安全检查”是如何工作的,他可以通过 Firebug 或其他开发人员工具轻松查看 js 代码,或者使用其他工具创建请求。所以,这根本不安全,但如果有的话,确实会阻止一些人,他们只是试图在 2 秒内获取脚本。每个努力的人都会得到它。
你也可以做一些混淆......使代码尽可能难以阅读:)这是另一个问题的链接,他们谈论使用这种技术隐藏它真正在做什么的恶意软件:https:/ /superuser.com/questions/418121/what-is-javascript-obfuscation-and-why-is-it-a-threat
你可以主持脚本吗?如果是这样,您可以向客户端颁发访问/API 密钥,并通过简单 Web 应用程序的密钥身份验证检查来提供此服务。
否则,您可以与客户端共享秘密并将密钥检查合并到脚本中。我写了一个要点来演示 javascript 按位编码,'salt' 参数应该是你的共享秘密。您还应该压缩/混淆脚本。
值得一提的是,后一种建议并不完全安全,它是一个脚本副本对您的价值以及保护它的努力将花费您的代价的权衡。