如何停止访问文本文件?
在我的yii
项目中,我有Changelog
和Licence
文本文件。我知道RBAC
并将其应用于每个Controller
,但是如何防止任何访客用户查看这些文本文件。到目前为止,任何人都可以查看。如何停止访问文本文件?
我在htaccess
文件
<Files ~ "(.txt)">
Order allow, deny
Deny from all
</Files>
使用该但这是txt file
工作,这些文件没有extension
您的问题是一个很小的电路板,所以答案是小将军。但有几种方法;
选项1.删除更改日志和许可证文件?如果这些是yii安装changelog和许可证,那么他们不需要留在服务器上。只要确保您遵守许可证要求即可。
选项2. 您提到“guest用户”哪个htaccess是不会与yii为授权用户良好集成。您可以将文件移动到包含单行Deny from all
的.htaccess文件夹中。这会阻止除您在服务器上执行的PHP之外的所有人。
您现在可以在控制器中创建一个方法/操作,它只是回应文件内容。 file-get-contents或readfile。将此身份验证包装起来,以便只有非访客用户才能使用该方法。
如果只有两个静态文件,那么可能只是每个“动作”。如果它的许多文件正在改变名称等,那么你接受一个ID到控制器传递给一个模型,使用scandir并检查file真的exists并吐出你的输出来查看。
选项2.1 文件夹用的.htaccess你也可以将文件移动到虚拟主机提供商的基础目录的父,如果你有这样的访问,而不是。这意味着你的web服务器不能提供文件,但php仍然可以通过本地路径访问它。
选项3 在.htaccess可以使用进行AuthType basic和将调用您的Web服务器提示输入用户名和密码的用户作为在.htaccess配置。这是有问题的,因为界面不是用户友好的,并且很难与你的webapps用户db集成。
选项4 的.htaccess可以支持其他AuthType秒,但选择2成为在这一点上要容易得多。
您可以阻止访问所有的文件,而不使用在你的站点根目录的.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]
多少文件有**的**约上你想拒绝访问,而且文件也有类似的名字? –