[英]Protect files with .htaccess from the outside, while still allowing internal access
[英]How to protect files from outside?
我自己做了一个非常小的CMS。 登录后设置会话。
CMS包含某些图像,php页面等。
这些页面还可以包括将数据添加到数据库的表单。
现在的问题是,您实际上可以使用地址访问显示表单的页面,即;
domain.com/mycms/includes/addpage.php
您会如何建议保护这一点?
注意:登录后,一切都必须正常进行,只是从外面可能不会显示该表格。 我可以检查该会话是否存在,但我想知道是否有更好和更容易的方法。
首先,如果要包含PHP文件,则实际上不应将其放在公共Web根目录下 。
如果无法做到这一点,另一种方法是在index.php
定义一个常量 (假设您将其用作主要入口点)并检查是否在每个包含文件中都设置了该常量,以防止直接访问这些常量。文件。
例如:
// index.php:
define('INDEX_LOADED', true);
// /includes/addpage.php:
if (!defined('INDEX_LOADED')) die('no direct access allowed');
旨在将您的文件放入
domain.com/ private /includes/addpage.php
然后从您的页面执行类似
include('../ private / includes / addpage');
对于不应该从外部访问的PHP文件,我总是使用扩展名.inc.php。 然后,我拒绝从外部看到该扩展名。 对于apache,您可以在主目录的.htaccess文件中执行此操作:
<Files ~ "\.inc\.php$">
Order allow,deny
Deny from all
</Files>
另外,如果您使用某些框架或具有类(或包含)目录,则可以拒绝对整个目录的访问,如下所示(apache):
<Location ~ "^/(classes|framework)"
Order allow,deny
Deny from all
</Location>
其他Web服务器还有其他禁止文件的方法。 如果您希望它具有通用性和便携性-Aron Rotteveel的建议是最好的。
您可以保留仅包含类声明的文件不受保护-如果它们从外部运行,则不会运行任何代码。 确保主机已关闭 php ini设置display_errors
如果有必要将私有文件保留在公用文件夹中,则可以使用CHMOD权限(例如700)对其进行保护
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.