Zend - Deny访问CSS,JS,图像文件

时间:2010-05-06 07:56:08

标签: zend-framework mod-rewrite

所有

我有以下Zend应用程序结构:

helloworld
 - application
     - configs
     - controllers
     - models
     - layouts
 - include
 - library
 - public
    - design
       -- css
           -- site.css
       -- js
           -- global.js
       -- images
           -- siteheader.gif
           -- sitefooter.gif
    - .htaccess
    - index.php

公用文件夹中的.htaccess文件如下所示:

Options -MultiViews

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

我的文档根指向“public”文件夹。目前,如果用户访问目录级别URL(例如:http://localhost/design或localhost / css),则上面的.htaccess文件确保向他显示“禁止访问”页面。但如果他访问文件级别URL(例如:http://localhost/design/css/site.css),它会向他显示CSS文件或js文件或PHP文件..

如果直接从URL访问,如何确保锁定上述文件类型的文件级访问权限?由于我的应用程序是JS密集型的,我想保护它免受用户的关注。

由于

2 个答案:

答案 0 :(得分:6)

您不能 - 浏览器必须能够访问它以显示它以及浏览器可以看到的任何内容,用户可以看到。

可以限制对发送引荐来源标头的浏览器的访问权限,但是对于浏览器不发送引荐来源的某些用户而言,这可能会破坏您的网站,并且当用户试图查看该页面的来源,他们可能会查看他们的浏览器已经下载的副本,用于渲染网站而不是获取新的副本。

说了这么多之后,你可以使用像YUI compresser这样的脚本来减少JavaScript的大小,有助于降低它的可读性:)。

答案 1 :(得分:0)

这是不可能的。例如,如果您有一个JavaScript文件

/js/seekrit.js

并且您阻止它被打开,它也会阻止通过包含它的页面打开,因为浏览器会在同一页面上单独发出HTTP请求(在后台)。

但是,您可以使用某种哈希来仅允许授权请求。

换句话说,使用服务器端进行特殊处理。不要将JavaScript用于seekrit的东西。