如何保护JavaScript代码,使其仅供某些域访问



我有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在里面。

或者你能给我推荐一些不能解混淆的混淆器吗?

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

你的设计有错误

如果你不希望其他域名访问你的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浏览器的访问,你不能这样做。

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

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

实际的JS文件名不会从外部看到,你可以在PHP中检查域名(尽管头可以被欺骗)。

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

最新更新