Abh*_*waj 6 php mysql apache security
我的php网站有多个php文件,其中一些用于用户界面,其中一些是帮助文件(这些文件通过数据库相互通信以返回结果).现在我需要用户无法从他们的直接URL执行帮助文件.
e.g. mydomain.com/login.php ---------- (Interface file, must be accessible to user)
mydomain.com/login_handle.php ----(Healper file, must not be accessible to user)
Run Code Online (Sandbox Code Playgroud)
所以我需要的是用户可以执行和浏览mydomain.com/login.php但必须能够执行mydomain.com/login_handle.php,而login.php和handle_login.php保持通信并且可以相互访问.谢谢,
编辑:对不起,但我正在使用共享主机,除了public_html之外没有其他文件夹.
我会尝试的第一件事:
将包含的文件移到文档根目录之外
将包含的文件移动到另一个文件夹中,并使用进行保护.htaccess。或者,将您的包含文件重命名为结尾,.inc并基于此创建规则。
确保包含的文件不输出任何内容;这并不是很安全,但是如果您的文件仅包含函数,类定义等而没有产生任何输出,则它将仅显示一个空白页。
可以通过使用常量来实现这一点。
index.php
<?php
define('MY_CONSTANT', '123');
include('helper.php');
Run Code Online (Sandbox Code Playgroud)
helper.php
<?php
if (!defined('MY_CONSTANT')) { exit; }
// we were called from another file
// proceed
Run Code Online (Sandbox Code Playgroud)
编辑
上面的2号方法可以通过以下方法完成:
在下面创建一个文件夹public_html,例如includes/
将所有应包含的文件仅移到该文件夹中
在.htaccess内部添加以下内容:
<FilesMatch "\.php$">
Order allow, deny
Deny from all
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
8396 次 |
| 最近记录: |