【问题标题】:Block direct access to js, css file but allow access from index.html? [duplicate]阻止直接访问 js、css 文件但允许从 index.html 访问? [复制]
【发布时间】:2014-01-22 18:37:44
【问题描述】:

这是我的目录的样子:

  • index.html
  • data.js
  • .htaccess

index.html 中的内容:

<html>
<body>
<script src="data.js" />
</body>
</html>

我的问题是:

  • 我不希望用户通过www.sample.com/data.js 等直接链接看到我的data.js

  • data.js 仍然允许来自index.html 的访问

我在 .htaccess 中尝试过:

deny from all

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC] 
RewriteRule \.(gif|jpg|css|js|png)$ - [F]

但它也总是阻止来自 index.html 的访问。

谢谢。

【问题讨论】:

  • 不可能。这不是互联网的运作方式。无论您发明什么解决方案都将很容易绕过。
  • link 有点不同,他不想访问那个文件,我希望我的 index.html 仍然可以访问。
  • 我告诉你,那是不可能的。用户“直接”访问文件和通过 index.html 间接访问文件之间没有区别。你不能阻止一个而允许另一个。
  • 有什么方法可以通过思考 php 或其他方法来做到这一点,因为我真的需要它。
  • 不可能的哪一部分你没有得到?充其量,您可以混淆您的代码以降低其对人类的可读性,但您不能防止人们看到它。互联网上的任何网站都没有这样做。不知何故,尽管有这种“限制”,互联网仍继续发挥作用。如果一个 JavaScript 文件可以被浏览器访问,那么它就可以被人类阅读。故事结束。

标签: javascript php html css .htaccess


【解决方案1】:

我不希望用户通过直接链接查看或下载我的 data.js,例如 www.sample.com/data.js

不可能。

JS 将在客户端呈现,即无论您采取什么措施保护它,它都会被下载到缓存中。

【讨论】:

  • 谢谢,我只是希望用户不能通过直接访问来查看它,这对我来说已经足够了。
  • @user972611 这不可能,无论你多么想要它。
【解决方案2】:

我的提示很容易被绕过,但如果不小心,我们可能会被困。

仅实时查看页面

您可以用 javascript 替换或删除 script 标签,以便在页面的实时视图中隐藏它。但是如果你直接看网络,你可以很容易地看到 javascript 文件/代码。

<div id="RemoveMe0">
    <script type="text/javascript">
        //This code it is hidden to live view.
        var my_var = 5 + 5;

        $('#RemoveMe0').remove();
        //or document.getElementById("RemoveMe0").innerHTML = "";
    </script>
</div>

对于包含 javascript:

<div id="RemoveMe1">
    <script type="text/javascript" src="Javascript/MyJS.js"></script>
    <script>
        //Your include it is hidden to live view.
        $('#RemoveMe1').remove();
    </script>
</div>

仅直接查看

将你的文件放在一个 HTML 文件中(myfile.js 到 myfile.html),像这样在直接视图上你可以执行一个 javascript 函数。

function Hello() {
    alert("Hello");
}
Hello();
//<script>document.body.innerHTML = "";</script>

或者如果你不想重命名你的文件,你可以使用.htaccess文件来修改文件头。

AddType text/html .js

或者最小化/解析你的 JS

你可以使用这样的工具:

【讨论】:

  • 或者你可以使用document.currentScript
【解决方案3】:

在提问之前尝试进行搜索。有很多搜索结果可用于此类主题。

部分链接:

1. How to prevent direct access to CSS and JS files

2.. http://www.codeproject.com/Questions/287331/Prevent-user-from-viewing-CSS-or-Javascript-of-any

.
.
.
还有更多...


所有人都有一个共同的答案:您不能隐藏/阻止访问者访问 CSS 或 JS 文件。换句话说,“不可能”

【讨论】:

  • 可以使用 .htaccess,请在回答问题前进行研究。
  • @Dre_Dre 如果可能的话,它很好。你为什么不给这篇文章添加一个答案。如果这证明我的答案是错误的,我没有问题。我很乐意学习新的东西跨度>
猜你喜欢
  • 2016-10-24
  • 2014-04-02
  • 2011-02-10
  • 2022-11-28
  • 2017-03-04
  • 1970-01-01
  • 2011-09-26
  • 2011-08-11
  • 1970-01-01
相关资源
最近更新 更多