如何保护管理文件夹php
我正在寻找一种方法,我可以安全管理区,特别是文件夹本身从外部访问(其中包括与图像和css文件夹)。我读过很多建议,但他们都觉得这是一种妥协或变通的方法,而不是一种防弹的方法,或者我不明白哪种方法对安全最有利,并且是对外部世界隐藏的,我想成为唯一知道或访问它的人。希望有人能透露一些他们将要使用的信息,当他们希望该区域完全隐藏在外部世界之外,而您仍然可以访问 我遇到的一些方法包括:如何保护管理文件夹php,php,css,security,Php,Css,Security,我正在寻找一种方法,我可以安全管理区,特别是文件夹本身从外部访问(其中包括与图像和css文件夹)。我读过很多建议,但他们都觉得这是一种妥协或变通的方法,而不是一种防弹的方法,或者我不明白哪种方法对安全最有利,并且是对外部世界隐藏的,我想成为唯一知道或访问它的人。希望有人能透露一些他们将要使用的信息,当他们希望该区域完全隐藏在外部世界之外,而您仍然可以访问 我遇到的一些方法包括: 正在根目录外移动文件夹 使用Htaccess拒绝所有。(也意味着我不能登录,除非我应用了我没有的静态IP地址) 我想到
不知道怎样才能最好地保护这个地区?使用会话是识别管理员的安全方法吗?确保内容不向web公开的最简单方法是将其放在目录结构中的站点文件夹上方 例如,在Apache配置中,将站点装载到
/var/www/sites/site/content/
并将受限制的内容放置在
/var/www/sites/site/
这样,内容就不会公开,但php仍然可以在需要时读取它
显然,如果php读取并回显css文件,这不会阻止用户查看css文件中的内容,但我不明白为什么css文件需要安全
编辑
<?php
require_once __DIR__ . '/../index.php';
<?php
session_start();
if (!isset($_SESSION['user'])) {
header('HTTP/1.0 403 Forbidden');
exit; // important to prevent further execution of the script
}
$file = $_SERVER['REQUEST_URI']; // important to sanitize or possible check against whitelist the requested resource
$ext = pathinfo($path, PATHINFO_EXTENSION);
switch ($ext) {
case 'jpg':
case 'jpeg':
header('Content-type: image/jpeg');
imagejpeg('/path/to/protected/resources/' . $file);
break;
}
假设您的服务器上有一个文件夹,位于/var/www/sites/site/content/some_folder
然后在浏览器中输入www.yoursite.com/some_folder
,假设站点中打开了索引,您将看到some_folder
但是你怎样才能从网络浏览者那里获得/var/www/sites/site/
。。。你不能
但你能做的是这样的事情:
这将是主站点文件夹中的一个php文件(对公众可见)
确保内容不向web公开的最简单方法是将其放置在目录结构中的站点文件夹上方
例如,在Apache配置中,将站点装载到
/var/www/sites/site/content/
并将受限制的内容放置在
/var/www/sites/site/
这样,内容就不会公开,但php仍然可以在需要时读取它
显然,如果php读取并回显css文件,这不会阻止用户查看css文件中的内容,但我不明白为什么css文件需要安全
编辑
<?php
require_once __DIR__ . '/../index.php';
<?php
session_start();
if (!isset($_SESSION['user'])) {
header('HTTP/1.0 403 Forbidden');
exit; // important to prevent further execution of the script
}
$file = $_SERVER['REQUEST_URI']; // important to sanitize or possible check against whitelist the requested resource
$ext = pathinfo($path, PATHINFO_EXTENSION);
switch ($ext) {
case 'jpg':
case 'jpeg':
header('Content-type: image/jpeg');
imagejpeg('/path/to/protected/resources/' . $file);
break;
}
假设您的服务器上有一个文件夹,位于/var/www/sites/site/content/some_folder
然后在浏览器中输入www.yoursite.com/some_folder
,假设站点中打开了索引,您将看到some_folder
但是你怎样才能从网络浏览者那里获得/var/www/sites/site/
。。。你不能
但你能做的是这样的事情:
这将是主站点文件夹中的一个php文件(对公众可见)
第一步实际上是将所有要阻止公众访问的文件移到文档根目录之外。这样就无法通过Web服务器直接访问文件
如果您希望阻止对所有资源(包括图像、脚本、样式表等)的访问,您可以实现一个“代理”,负责提供文件(在检查用户是否获得授权后)
最简单、最灵活的方法是在应用程序中有一个入口点。使用apache,可以使用以下重写规则轻松实现这一点:
RewriteEngine On
RewriteRule ^(.*)$ index.php [L,QSA]
这将确保每个请求都通过index.php文件
不,您可以轻松检查是否允许您使用访问资源,例如:
<?php
session_start();
if (!isset($_SESSION['user'])) {
header('HTTP/1.0 403 Forbidden');
exit; // important to prevent further execution of the script
}
// user is allowed access, do shit
第一步实际上是将所有要阻止公众访问的文件移到文档根目录之外。这样就无法通过Web服务器直接访问文件
如果您希望阻止对所有资源(包括图像、脚本、样式表等)的访问,您可以实现一个“代理”,负责提供文件(在检查用户是否获得授权后)
最简单、最灵活的方法是在应用程序中有一个入口点。使用apache,可以使用以下重写规则轻松实现这一点:
RewriteEngine On
RewriteRule ^(.*)$ index.php [L,QSA]
这将确保每个请求都通过index.php文件
不,您可以轻松检查是否允许您使用访问资源,例如:
<?php
session_start();
if (!isset($_SESSION['user'])) {
header('HTTP/1.0 403 Forbidden');
exit; // important to prevent further execution of the script
}
// user is allowed access, do shit
是的,您应该将内容移出文档根目录。您可以尝试使用.htaccess来保护您的文件,但允许.htaccess覆盖本身可能是一个安全问题。这当然是一个性能问题
只需将您的404处理程序指向如下内容
<?php
define('REQUEST_PATH', '/secure');
define('SECURED_CONTENT', '/var/www/restricted');
$req=parse_url($_SERVER["REQUEST_URI"]);
if ((0===strpos($req['path'],REQUEST_PATH))
&& $_SESSION['authenticated']) {
if (is_readable(SECURED_CONTENT . $req['path'])
&& is_file(SECURED_CONTENT . $req['path'])) {
header('Content-type: '
. mime_content_type(SECURED_CONTENT . $req['path']);
include(SECURED_CONTENT . $req_path);
} else {
header('HTTP/1.0 404 Not Found');
}
exit;
}
header('HTTP/1.0 403 Forbidden');
是的,您应该将内容移出文档根目录。您可以尝试使用.htaccess来保护您的文件,但允许.htaccess覆盖本身可能是一个安全问题。这当然是一个性能问题
只需将您的404处理程序指向如下内容
<?php
define('REQUEST_PATH', '/secure');
define('SECURED_CONTENT', '/var/www/restricted');
$req=parse_url($_SERVER["REQUEST_URI"]);
if ((0===strpos($req['path'],REQUEST_PATH))
&& $_SESSION['authenticated']) {
if (is_readable(SECURED_CONTENT . $req['path'])
&& is_file(SECURED_CONTENT . $req['path'])) {
header('Content-type: '
. mime_content_type(SECURED_CONTENT . $req['path']);
include(SECURED_CONTENT . $req_path);
} else {
header('HTTP/1.0 404 Not Found');
}
exit;
}
header('HTTP/1.0 403 Forbidden');
CSS和JS文件中没有任何机密内容(如果有,您就有一个