如何防止其他网站链接到我的 javascript 文件?
Posted
技术标签:
【中文标题】如何防止其他网站链接到我的 javascript 文件?【英文标题】:How can I prevent other sites from linking to my javascript files? 【发布时间】:2011-10-05 04:45:36 【问题描述】:我的服务器上托管了一些 jquery 插件,但我希望它只对我的访问者可用。我很怀疑其他网站可能只是链接到我的 js 文件并窃取我的带宽。 你会如何解决这个问题?
【问题讨论】:
为什么他们需要链接到您的网站?他们在查看您的网站时可以很好地下载它们并使用它吗?? 如果我要使用你的插件,我最好下载那个 javascript 文件(如果你允许的话),谁知道 - 你可以重命名你的文件,改变功能或者做一些其他的事情破坏我的网站。 有人可能会占用您的部分带宽;但是,链接到您的 javascript 不会让他们窃取您的流量。事实上,如果你的 javascript 设计得当,你就可以窃取他们的流量! 【参考方案1】:您可以使用 .htaccess 文件来限制域。
Selective hotlinking prevention through .htaccess
Prevent Hotlinking of Image, Script, CSS etc Using .htaccess
【讨论】:
两个链接都坏了。 @swalog:已修复!【参考方案2】:在站点文件夹的根目录中创建一个 .htaccess(对于带有 ISAPI_Rewrite 的 apache 或 IIS)
将 mysite.com 替换为您的域,记住这一切。必须在 RewriteCond 中使用反斜杠,并在试图窃取您的带宽时替换为您想要发送到的页面
RewriteEngine On
RewriteCond %HTTP_REFERER !^http://(.+\.)?mysite\.com/ [NC]
RewriteCond %HTTP_REFERER !^$
RewriteRule .*\. (js|json)$ http://mysite.com/theif.txt
并使用以下代码将 theif.txt 添加到您的站点(任何试图窃取您代码的站点都会将所有用户发送到http://www.yourhtmlsource.com/sitemanagement/bandwidththeft.htmllol
top.location = "http://www.yourhtmlsource.com/sitemanagement/bandwidththeft.html";
他们很快就会从该页面取消您的脚本的链接
【讨论】:
【参考方案3】:您可能能够阻止他们直接使用您的 javascript 文件,但没有保证方法可以阻止他们复制您的文件并手动使用它们,我已经看到一些您可能想尝试的答案:
通过 php 文件使用您的 javascript 文件:
header("content-type: text/javascript");
if(isset($_GET["name"]) && strpos("yourdomain.com", $_SERVER['HTTP_REFERER']))
echo(file_get_contents("hidden_path_to_js/".$_GET["js_name"]."js"));
else
die("access denied");
在上面的示例中,您将检查引用地址是否是您的网站,以便使用您的 js 文件
<script src="get_js_file.php?js_name=jquery"></script>
【讨论】:
@Webnat0 我认为您可以通过添加更多标头来缓存: header("Cache-Control: no-cache, must-revalidate"); header("过期时间:星期六,2011 年 7 月 26 日 05:00:00 GMT"); 只是为了 Expires 的事情,当推出它时,使用date()
函数来写出我认为@Pezhvak IMV 所想的确切时间和日期【参考方案4】:
您始终可以通过 PHP 文件运行 javascript,使用 .htaccess 将所有请求路由到它。如果用户代理与您的网站不同,则可以发送 403,否则可以使用 file_get_contents 来返回文件。
希望对你有帮助
有用的 htaccess 模板: 检查拼写 选项 - 索引 选项 +FollowSymlinks
DirectoryIndex index.php
RewriteEngine on
RewriteBase /js/
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^(.+)$ /js/index.php?p=$1 [L]
【讨论】:
你为什么要使用 .htaccess 将它们发送到一个必须做更多工作的 php 文件,然后只是将它们发送到一个阻止它们使用你的脚本的文件? 不知道,没想到。但我使用它是因为我可以将 javascript 文件上传到其中,然后 php 文件会缩小并打包它。加上它有一个跟踪器,以防止相同的文件被加载两次或在一个实例期间。以上是关于如何防止其他网站链接到我的 javascript 文件?的主要内容,如果未能解决你的问题,请参考以下文章