如何拒绝直接访问网站文件但允许网站文件通过包含'file.php'相互访问?
Posted
技术标签:
【中文标题】如何拒绝直接访问网站文件但允许网站文件通过包含\'file.php\'相互访问?【英文标题】:How to deny direct access to website files but allow website files to access each other by include 'file.php'?如何拒绝直接访问网站文件但允许网站文件通过包含'file.php'相互访问? 【发布时间】:2018-12-29 04:38:11 【问题描述】:如果来自外部的用户想要使用 url 打开网站文件但允许网站文件通过在 php 文件中包含“file.php”来相互访问,如何拒绝对网站文件的直接访问。
我有一个 .htaccess 文件。我可以这样做吗?
【问题讨论】:
【参考方案1】:您可以通过将 PHP 文件放在您的 webroot 之外来做到这一点。您实际需要访问的脚本需要位于您的 webroot 中或下方。现在,您通常会看到具有如下结构的 PHP 项目:
/projectname
/app
/src
/web
使用 composer 进行依赖/组件库管理是当今最先进的技术,如果您使用它,它将创建其他目录,如供应商。
因此,您的前端控制器或其他 Web 可访问脚本进入 projectname/web
,这就是您将 webroot 设置为的内容。
您的其他脚本进入 /projectname/src。
您的 include/require 语句需要一个文件系统路径,因此您可以通过相对寻址或使用完整路径来引用它们。
通常人们会有一个引导包含或使用一个前端控制器(一切都通过 index.php)来设置包含路径。对于组件库,您还希望实例化您的类加载器以解析您可能在项目中使用的任何库。
再次强烈推荐使用 composer,它会为你生成你的类加载器,然后只需确保它被包含。
【讨论】:
【参考方案2】:这个 .htaccess 文件只允许用户打开 index.php。尝试访问任何其他文件将导致 403 错误。
订单拒绝,允许 全部拒绝
<Files "index.php">
Allow from all
</Files>
如果您还想对某些文件使用身份验证,您只需在我的示例末尾添加当前文件中的内容即可。
【讨论】:
以上是关于如何拒绝直接访问网站文件但允许网站文件通过包含'file.php'相互访问?的主要内容,如果未能解决你的问题,请参考以下文章