2016-11-24 150 views
1

在我的yii项目中,我有ChangelogLicence文本文件。我知道RBAC并将其应用于每个Controller,但是如何防止任何访客用户查看这些文本文件。到目前为止,任何人都可以查看。如何停止访问文本文件?

我在htaccess文件

<Files ~ "(.txt)"> 
Order allow, deny 
Deny from all 
</Files> 

使用该但这是txt file工作,这些文件没有extension

+0

多少文件有**的**约上你想拒绝访问,而且文件也有类似的名字? –

回答

0

您的问题是一个很小的电路板,所以答案是小将军。但有几种方法;

选项1.删除更改日志和许可证文件?如果这些是yii安装changelog和许可证,那么他们不需要留在服务器上。只要确保您遵守许可证要求即可。

选项2. 您提到“guest用户”哪个htaccess是不会与yii为授权用户良好集成。您可以将文件移动到包含单行Deny from all的.htaccess文件夹中。这会阻止除您在服务器上执行的PHP之外的所有人。

您现在可以在控制器中创建一个方法/操作,它只是回应文件内容。 file-get-contentsreadfile。将此身份验证包装起来,以便只有非访客用户才能使用该方法。

如果只有两个静态文件,那么可能只是每个“动作”。如果它的许多文件正在改变名称等,那么你接受一个I​​D到控制器传递给一个模型,使用scandir并检查file真的exists并吐出你的输出来查看。

选项2.1 文件夹用的.htaccess你也可以将文件移动到虚拟主机提供商的基础目录的父,如果你有这样的访问,而不是。这意味着你的web服务器不能提供文件,但php仍然可以通过本地路径访问它。

选项3 在.htaccess可以使用进行AuthType basic和将调用您的Web服务器提示输入用户名和密码的用户作为在.htaccess配置。这是有问题的,因为界面不是用户友好的,并且很难与你的webapps用户db集成。

选项4 的.htaccess可以支持其他AuthType秒,但选择2成为在这一点上要容易得多。

1

您可以阻止访问所有的文件,而不使用在你的站点根目录的.htaccess或者Apache的配置/虚拟主机文件这一规则扩展名:

RewriteEngine On 

# If the request is for a valid file 
RewriteCond %{REQUEST_FILENAME} -f 
# if there is no extension then block 
RewriteRule ^[^.]+$ - [F]