如何阻止直接访问我的JavaScript文件?

时间:2011-06-13 20:01:15

标签: php javascript minify

我使用Minify来缩小和缓存我的所有脚本请求。 我只希望我的用户能够访问缩小版本的JavaScript文件。

www.example.com/min缩小谎言,我的脚本位于www.example.com/scripts。如何阻止直接访问我未明确的JavaScript文件所在的doc_root/scripts。我宁愿不把它们从文档根目录中删除,但它是一个选项。

请注意我正在使用Zend Framework,因此我的应用程序的实际根目录转移到www.example.com/public。 htaccess文件处理重写。

6 个答案:

答案 0 :(得分:10)

您是否只能在doc_root/scripts内使用.htaccess文件来阻止通过HTTP访问网络上的.js个文件?

它不会停止缩小,因为它提供间接访问。

所以在doc_root/scripts/.htaccess中,就像

那样
<Files ~ "\.js$">
    order allow,deny
    deny from all
</Files>

请注意,.htaccess文件的位置在这种情况下很重要。

答案 1 :(得分:5)

您实际上无法阻止面向最终用户的代码。即使您使用PHP或其他服务器端语言提供服务并阻止直接请求,当然仍然可以使用许多工具直接读取它。

您应该考虑到这一点,并注意JavaScript注释,业务知识等。

更新:

但是,如果您正在讨论最终用户无需访问的代码,您可以按照自己的说法将其移出服务器根目录,或者可以阻止目录中的文件(或整个目录)。使用Apache的.htaccess很容易。

order deny, allow
deny from all

您还可以使用.htaccess文件中的mod_rewrite将源文件重定向到缩小版本。

RewriteEngine On
RewriteRule /scripts/(.*)$ /min/$1 [L,NC]

答案 2 :(得分:0)

取决于您正在使用的服务器。假设它是Apache,您可以将其添加到.htaccess文件中:

<Directory ~ "\scripts">
Order allow,deny
Deny from all
</Directory>

或者那种效果......

答案 3 :(得分:0)

唯一的方法是检查引用者,而不是每个人都发送它们,或者发送真实的引用者。换句话说,你不能阻止直接访问真正想要某些东西的人。如果请求是直接请求或通过<script src=....>类型请求完成,则无法100%准确地确定。

答案 4 :(得分:0)

为了让您的Javascript实际运行,用户的浏览器必须能够最终读取它。 因此,没有真正的方法来“阻止”访问您的脚本文件夹(确切地说,您可以这样做,但这会破坏您的网站,因为浏览器不会看到文件以便运行它们。)

一种解决方案可能是混淆,这使得javascript代码更难以阅读/理解,但最终用户将看到代码,并且通过一些坚持不懈的逆向工程,它可以被去混淆。

我见过有人做的另一件事是创建一个“空”js.html页面,并将所有javascript插入页面中的脚本标签(嵌入式,而非外部),并从他的主页面生成ann ajax请求js.html并将其嵌入页面底部。除非使用诸如firebug之类的开发工具,否则用户在查看源代码时将看不到js。

请注意,最后一个选项也可能会导致一些延迟,具体取决于您加载的代码的数量。但是这里的关键是不阻止对脚本的访问,只是让它们更难获取/读取/复制。

编辑:oops,也是误读。我认为在这种情况下最好的解决方案是在脚本文件夹中使用htaccess文件拒绝所有访问

答案 5 :(得分:0)

这个答案比问题要新颖(仅几年,没什么)

您无法拒绝对JavaScript文件的访问,因为无法从<script>标签访问它们。

但是我找到了一种解决方法:


RewriteEngine On

RewriteRule ^.*\.js$ /invalid.html [R=301,L]

将其放在网站主文件夹中的.htaccess文件中。 (在htdocs或public_html下)。 这将自动重定向所有人。所以他们看不到。