This topic created in 4492 days ago, the information mentioned may be changed or developed.
刚买了个VPS,环境是centos + lnmp,有一些文件php要调用,但这些文件比较敏感,不希望放在公开目录中。
用/root/vhost.sh建立的网站,绑定的整个目录都是公开的,把文件放到这个目录外面php又调用不到(貌似属于跨站了)。
请教如何做才能既做到文件与外界隔离的同时又能够被php调用呢?
12 replies • 1970-01-01 08:00:00 +08:00
 |
|
3
ritksm Feb 4, 2014
在nginx上把敏感目录的location直接return 403好了...
|
 |
|
4
Part Feb 4, 2014
所谓的“调用”是include? include 可以任意目录的。
通常的做法是 a.php !defined('INNER') && exit('Access Denied');
b.php define('INNER', true); include('a.php');
|
 |
|
5
wdkwdkwdk Feb 4, 2014
ajax 设置Access-Control-Allow-Origin
|
 |
|
7
Sunyanzi Feb 4, 2014
随便创建别的一个什么目录 ...
比如你的网站根是 /var/www ... 那么在这个目录之外的所有区域都是 web 不可见的 ...
你可以创建 /var/private ... 然后 chmod 这个目录使得 php 可读 ...
这时候就可以通过在脚本里写 file_get_contents( '/var/private/foo.bar' ); 取得文件内容了 ...
|
 |
|
8
mogita Feb 4, 2014
if (!isset($argv)) die();
|
 |
|
9
vibbow Feb 4, 2014
@ ck65 if (PHP_SAPI === 'cli')
|
 |
|
10
oott123 Feb 4, 2014 via Android
把网站放到./www/wwwroot里,open_base_dir限制到./www里不就好了 不过最好还是3楼的方案~
|
 |
|
11
wdlth Feb 5, 2014
可以在Nginx或者PHP代码设置一些认证,比如最简单的Basic Auth。
|
 |
|
12
lyragosa Feb 24, 2014
设置某个文件夹的htaccess(我用的apache,nginx应该也有类似的),为Deny from all
这样 web访问这个文件夹的内容会被403,但是不影响include,也不影响在shell下执行 /usr/bin/php 来直接用解析器访问。
|