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

前端之家收集整理的这篇文章主要介绍了我应该在哪里放置敏感文件,以便PHP脚本可读?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在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.

猜你在找的PHP相关文章