【问题标题】:How can I prevent other sites from linking to my javascript files?如何防止其他网站链接到我的 javascript 文件?
【发布时间】:2011-10-05 04:45:36
【问题描述】:

我的服务器上托管了一些 jquery 插件,但我希望它只对我的访问者可用。我很怀疑其他网站可能只是链接到我的 js 文件并窃取我的带宽。 你会如何解决这个问题?

【问题讨论】:

  • 为什么他们需要链接到您的网站?他们在查看您的网站时可以很好地下载它们并使用它吗??
  • 如果我要使用你的插件,我最好下载那个 javascript 文件(如果你允许的话),谁知道 - 你可以重命名你的文件,改变功能或者做一些其他的事情破坏我的网站。
  • 有人可能会占用您的部分带宽;但是,链接到您的 javascript 不会让他们窃取您的流量。事实上,如果你的 javascript 设计得当,你就可以窃取他们的流量!

标签: php javascript apache


【解决方案1】:

【讨论】:

  • 两个链接都坏了。
  • @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 文件会缩小并打包它。加上它有一个跟踪器,以防止相同的文件被加载两次或在一个实例期间。
    猜你喜欢
    • 2010-09-28
    • 1970-01-01
    • 2013-09-18
    • 2017-11-03
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    • 2012-11-25
    相关资源
    最近更新 更多