如何保护JavaScript代码,使其只能访问某些域

时间:2011-11-09 12:02:17

标签: javascript jquery

我有JavaScript我想限制它在某些域中运行。例如,我有

javascript:(a=(b=document).createElement('script')).src='https://hello.com/js.php',b.body.appendChild(a);void(0)

我上面的代码只适用于http://helloworld.com。如果其他人试图通过https://hello.com/js.php访问我的JS文件,他们就不应该在里面看到我的JavaScript。

或者你能推荐一些无法去混淆的混淆器吗?

3 个答案:

答案 0 :(得分:2)

任何人都可以访问您的JS,因为它的输出是公共网页。

您的设计在某处有错误。

答案 1 :(得分:1)

如果您不希望其他域访问您的JS文件,则可以阻止通过.htaccess文件进行热链接:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.js$ http://mysite.com/no-hotlinks.js [L]

您可以通过添加更多规则来允许许多域访问JS文件:

RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?anothersite\.com/ [NC]

但是,如果您想阻止从Web浏览器访问,则无法执行此操作。

答案 2 :(得分:0)

您可以使用PHP(或任何其他服务器端语言)来提供JS文件。

因此,您不会调用myfile.js而是调用generateJS.php?val=15,然后您将有一个数组将val与正确的文件名相关联。

从外面看不到实际的JS文件名,您可以在PHP中检查域名(虽然标题可以被欺骗)。

显然,人们仍然可以通过这种方式获得JS的来源,但是,如果你真的认为这是一个问题,你就不应该首先使用JS。