如何防止其他网站链接到我的 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 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何防止我的网站页面通过iFrame的第三方网站框架加载

如何防止我的网站页面被加载到其他网站的 iframe 中?

如何通过错误报告反馈链接防止网站攻击?

如何防止 OpsWorks 部署默认部署到我的自定义层?

防止欺骗攻击 - 如何确保我的客户收到来自真实服务器的订单?

PHP 防止“javascript:”链接注入