加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

我应该在哪里放置敏感文件,以便PHP脚本可读?

发布时间:2020-12-13 22:39:05 所属栏目:PHP教程 来源:网络整理
导读:我在Parallels / Plesk VPS主机上,这是一个真正的新手问题. webroot在: /var/www/vhosts/my-domain-name/httpdocs 还有一个路径叫做: /var/www/vhosts/my-domain-name/private/ 但PHP脚本似乎无法读取文件. 从我理解的任何文件放置在webroot,有被送达公众
我在Parallels / Plesk VPS主机上,这是一个真正的新手问题.

webroot在:

/var/www/vhosts/my-domain-name/httpdocs

还有一个路径叫做:

/var/www/vhosts/my-domain-name/private/

但PHP脚本似乎无法读取文件.

从我理解的任何文件放置在webroot,有被送达公众的危险,如果它的web-path / filename请求.我隐约知道使用.htaccess文件来告诉Apache不提供某些文件/目录.

但是(或应该)我将敏感文件放在webroot之外的某个地方,还允许PHP脚本读取?

谢谢!

尝试读取上面“私人”文件夹中的文件时,我的错误是:

Warning: file() [function.file]: open_basedir restriction in effect. File(../../private/test.txt) is not within the allowed path(s): (/var/www/vhosts/blah.com/httpdocs:/tmp) in /var/www/vhosts/blah.com/httpdocs/misc/testscript.php on line 8

Warning: file(../../private/test-dt.txt) [function.file]: failed to open stream: Operation not permitted in /var/www/vhosts/blah.com/httpdocs/misc/testscript.php on line 8

更新:解决

Picto在reddit / r / PHPHelp给了我所需要的,它是特定于Plesk系统的.
我必须写一个名为vhost.conf的文件放在与httpdocs位于同一级别的conf文件夹中.在vhost.conf中,我使用:

<Directory /var/www/vhosts/my-domain-name/httpdocs>
php_admin_value open_basedir /var/www/vhosts/my-domain-name/httpdocs:/tmp:/var/www/vhosts/my-domain-name/myfolder
</Directory>

所以我现在把我的敏感文件放在“myfolder”里面,这个文件位于webroot(httpdocs)之外.
之后,要使这些设置生效,(重新启动Apache不起作用)有一些Plesk具体的命令给出,见:http://www.gadberry.com/aaron/2006/02/09/plesk_vhost/

这是一个很好的做法存储敏感数据apache文件根外.

您需要允许PHP访问这些文件夹来添加或修改虚拟主机配置.

寻找
php_value open_basedir

并添加由冒号(:)分隔的文件夹

open_basedir的更多信息

注意:open_basedir存在一些安全问题,解释如下

http://www.hardened-php.net/advisory_012004.42.html

编辑:

我为每个域使用这个树结构:

domain/            www-data permisions
├── etc            r-x
├── log            rwx
├── phpCache       rwx
├── phpFiler       rwx
├── phpInclude     r-x
├── phpLogs        rwx
├── phpSession     rwx
├── phpTmp         rwx
├── phpTrash       rwx
├── privat         --- 
├── www443         r-x
└── www80          r-x

etc:用于应用程序配置文件.

log:用于Apache或nginx日志文件

phpCache:用于Zend_Cache文件

phpFiler:对于应用程序的文件,如果用户具有权限,则PHP脚本将提供它.

phpInclude:php_value include_path

phpLogs:用于应用程序日志

phpSessions:用于存储这个虚拟主机数据会话.

phpTmp:用于临时文件,如上传.

phpTrash:phpFiler的垃圾桶.

私有化:对我的私人倾诉

www443:用于https文件根

www80:用于http文档根

在open_basedir clausule我把所有的文件夹,除了log和privat.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读