chr*_*ard 22 php sql apache permissions
我正在努力帮助一位朋友将网站从一个网站搬到另一个网站.旧的地方已经关闭,我只有一个平坦的tar文件.
该网站包含HTML文档,可以下载一个小的Java应用程序(将在手机上加载)以将数据发送到网站.
移动Java应用程序发送了一个字符串URL=<HOST>/php/register.php
.这个php脚本包含另一个php脚本(../inc/db_login.php
),它使用连接到SQL DB $link=mysql_connect()
.另一个文件,register.php
用于将新发送的数据放入DB中的SQL插入.
我的问题是基本的,我应该把这两个PHP文件放在新网站上以及目录和文件应该具有哪些权限?
旧的Web服务器显然有一个/php
和/inc
目录.这些都不存在于新的Web服务器上.我应该创建它们吗?他们应该获得什么许可?我想在单独的PHP文件中使用密码的原因是安全性.该/php
和/inc
目录可能有不同的权限.
新服务器有目录:
/httpdos
/httpsdos
/cgi-bin
/conf
(以及其他一些可能不相关的)我的问题
file-extension(.php
)是否对服务器有意义:因为PHP脚本被"包含"在HTML代码中(<?...?>
服务器之间需要查看文件后缀还是不相关?)(我知道服务器会对<?...?>
, 当然)
应该将公共文件(register.php
在我的情况下)放在httpdocs/
目录中还是服务器(我认为是apache)对某些内容做出反应并将其提取到另一个目录中?
PHP脚本是否应具有权限R-X
(读取和执行),--X
(执行)或R--
(读取)?从操作系统的角度来看,我猜apache只是读取这些文件,这意味着它们应该是R--
,但这意味着如果PHP服务被"停止",客户端将在其浏览器中获取所有PHP代码(?).我更喜欢它,--X
但因为这既不是二元也不是#!
,我想它一定是--R
?
如果公共PHP脚本可以放在另一个目录(例如,/php
而不是/httpdocs
)应该/php
(和脚本)有什么权限?我想服务器必须知道这个/php
目录(或者是否有通常的默认值?)
包含的PHP脚本(../inc/db_login.php
包含SQL密码)不应该在/httpdocs
我的猜测之下.这意味着我register.php
包含的文件不在/httpdocs
子树下.这有用吗?服务器需要知道吗?
据我所知,您可能需要了解服务器配置.只需假设答案中的默认值(如果是,您可以知道它的更改位置).
Ign*_*ams 51
目录必须具有可执行的执行权限.通常这是0755
.运行的PHP脚本mod_php
不会执行,而是读取; 0644
就足够了.必须写入的目录需要由Web服务器运行的用户拥有.可能还有其他关于权限的问题,例如SELinux,但上述内容将帮助您了解基础知识.
其他用户或外部客户端不得访问的文档应由0600
Web服务器用户拥有,并且位于DocumentRoot外部.请注意,在安全模式下运行mod_php将阻止脚本包含DocumentRoot之外的任何内容; 一个可悲的缺陷.
kin*_*roi 13
为了最大限度地提高安全性,您应该设置最小权限,即640.
绝不允许每个人阅读php脚本.
有用的命令:
chmod 640 file.php
chown user:group file.php
usermod -a -G group apache
Run Code Online (Sandbox Code Playgroud)
这些命令正在做什么: