仅允许某些服务器/网站连接到脚本

时间:2013-05-22 09:13:54

标签: javascript .htaccess

我有一个JavaScript脚本,我想卖给我的客户。问题是脚本无法进行现场更改,因此他们可以直接链接到脚本并获得好处 - 这是Google Analytics的自动标记和转换设置类型脚本,它已经进行了大量工作。

有没有办法让网站只看到脚本?因此,如果一个人去那里它将是403.我尝试使用htaccess并允许从服务器IP访问,这当然不起作用...

2 个答案:

答案 0 :(得分:1)

你的意思是区分代码是由嵌入在其中还是在其外部的页面请求的,对吗?

您可以依赖的唯一设置是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

答案 1 :(得分:0)

您是否可以托管脚本?如果是这样,您可以向客户端发出访问/ API密钥,并通过简单的Web应用程序的密钥身份验证检查来提供此服务。

否则,您可以与客户共享密钥并将密钥检查合并到脚本中。 I've written a gist demonstrating javascript bitwise encoding,'盐'论证应该是你的共同秘密。您还应该压缩/混淆脚本。

值得一提的是,后一个建议并不是完全安全的,而是对单个副本的脚本值多少以及保护它的努力将花费你的成本进行权衡。