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

| 我使用Minify来缩小并缓存所有脚本请求。我只希望我的用户能够访问JavaScript文件的缩小版本。 Minify位于
www.example.com/min
,我的脚本位于
www.example.com/scripts
。如何阻止直接访问未缩小的JavaScript文件所在的“ 2”。我宁愿不要将它们放在文档根目录之外,但这是一个选择。 请注意,我正在使用Zend Framework,因此我的应用程序的实际根目录已移至
www.example.com/public
。 htaccess文件可处理重写。     
已邀请:
        您不能只使用ѭ2内的.htaccess文件来阻止所有通过HTTP访问
.js
文件的情况吗? 它不会停止缩小,因为它提供了间接访问。 因此,在
doc_root/scripts/.htaccess
中,
<Files ~ \"\\.js$\">
    order allow,deny
    deny from all
</Files>
请注意,在这种情况下,“ 8”文件的位置很重要。     
        您实际上无法阻止面向最终用户的代码。即使您使用PHP或其他服务器端语言为其提供了服务并阻止了直接请求,当然仍然可以使用许多工具直接读取它。 您应该牢记这一点,并注意javascript注释,业务知识等。 更新: 但是,如果您要谈论的是最终用户永远不需要访问的代码,则可以像您提到的将其移出服务器根目录,或者可以阻止目录中的文件(或整个目录)。使用Apache的.htaccess很容易。
order deny, allow
deny from all
您也可以在.htaccess文件中使用mod_rewrite将源文件重定向到缩小版本。
RewriteEngine On
RewriteRule /scripts/(.*)$ /min/$1 [L,NC]
    
        取决于您使用的服务器。假设它是Apache,则可以将其添加到您的.htaccess文件中:
<Directory ~ \"\\scripts\">
Order allow,deny
Deny from all
</Directory>
或类似的东西。     
        唯一的方法是检查引荐来源,而不是每个人都发送它们,或者发送真实的。换句话说,您不能阻止直接访问任何真正想要东西的人。不能以100%的准确性确定请求是直接请求还是通过
<script src=....>
类型请求完成。     
        为了使Javascript真正运行,用户的浏览器必须最终能够读取它。 因此,没有真正的方法来“阻止”访问脚本文件夹(确切地说,您可以,但是这会破坏您的网站,因为浏览器看不到这些文件来运行它们。) 一种解决方案可能是混淆,这会使javascript代码更难于阅读/理解,但最终用户会看到代码,并且通过坚持不懈的逆向工程,可以消除混淆。 我见过有人做的另一件事是创建一个“空” js.html页面,然后将他们所有的javascript插入页面的脚本标签中(嵌入的,而不是外部的),并从他的主页发出an ajax请求以js.html并将其嵌入页面底部。有点绕道,但除非使用firebug等开发人员工具,否则用户在查看源代码时将看不到js。 请注意,最后一个选项也可能会导致一些延迟,具体取决于正在加载的代码的数量。但是这里的关键并不在于阻止对脚本的访问,而只是使它们难以获取/读取/复制。 编辑:哎呀,也误读了。我认为在这种情况下,最好的解决方案是在脚本文件夹中添加htaccess文件,以拒绝所有访问     

要回复问题请先登录注册