Estoy intentando ayudar a un amigo a mover un sitio web de un hotel web a otro. El antiguo lugar ya está cerrado, solo tengo un archivo tar plano de lo que contenía.¿Qué permisos tienen los scripts/directorios de PHP?
El sitio web contenía documentos HTML y uno podía descargar una pequeña aplicación Java (para ser cargada en un teléfono móvil) para enviar datos al sitio web.
La aplicación móvil de Java envió una cadena a URL=<HOST>/php/register.php
. Esta secuencia de comandos php incluía otra secuencia de comandos php (../inc/db_login.php
), que se conectaba a una base de datos SQL usando $link=mysql_connect()
. Otro archivo, register.php
, hizo la inserción de SQL para poner los nuevos datos enviados en la base de datos.
Mi pregunta es básicamente, ¿dónde debería poner estos 2 archivos PHP en el nuevo sitio web y qué permisos deberían tener los directorios y archivos?
El viejo servidor web obviamente tenía un directorio /php
y /inc
. Ninguno de estos existe en el nuevo servidor web. ¿Debería crearlos? ¿Qué permiso deberían tener? Supongo que la razón para tener la contraseña en un archivo PHP separado era la seguridad. El directorio /php
y /inc
probablemente tenía permisos diferentes.
El nuevo servidor tiene directorios:
/httpdos
/httpsdos
/cgi-bin
/conf
(y algunos otros probablemente irrelevante)
mis preguntas
¿La extensión de archivo (
.php
) significa algo para el servidor: como scripts PHP están "incluidos" en el código HTML (entre<?...?>
, el servidor no tiene que mirar el sufijo de archivo o es irrelevante? (Entiendo que el servidor reacciona en el<?...?>
, por supuesto)caso de que el archivo público (
register.php
en mi caso) se incluirán en el directoriohttpdocs/
o hace el servidor (Apache creo) reacciona con algo y obtiene lo en otro directorio?caso de que el script PHP tiene permiso
R-X
(lectura y ejecución),--X
(ejecución) oR--
(leer)? Desde una perspectiva del sistema operativo, supongo que apache solo está leyendo estos archivos, lo que significa que deberían serR--
, pero esto significaría que si el servicio PHP se "detiene", el cliente obtendría todo el código PHP en su navegador (?). Preferiría que fuera--X
pero como esto no es ni un binario ni tiene un#!
, supongo que debe ser--R
?Si el script PHP público puede ser colocado en otro directorio (por ejemplo
/php
en lugar de/httpdocs
) lo que debería/php
(y el guión) tienen permiso ?. Supongo que el servidor tiene que saber sobre este directorio/php
(¿o hay valores predeterminados usuales?)El script PHP incluido (
../inc/db_login.php
, que contiene la contraseña de SQL) no debería estar bajo/httpdocs
supongo. Esto significa que miregister.php
incluye un archivo que no está bajo el subárbol/httpdocs
. ¿Esto funciona? ¿El servidor necesita saber?
Entiendo que es posible que necesite conocer la configuración del servidor. Solo asume el valor predeterminado en tu respuesta (y puedes decir dónde se cambia si lo está).
Gracias por la respuesta. Pondré register.php en httpdocs/php. Ahora traté de crear/inc e incluir ../../inc/db_login.php, pero la creación de/inc fue rechazada ... ¿debería db_login.php colocarse en cgi-bin entonces ?. Y si apache está en modo seguro, entonces db_login debe estar en el árbol httpdocs ... ¿no es un riesgo de seguridad? –
Nada más que scripts CGI deben estar en 'cgi-bin'. Sí, tener archivos de configuración en DocumentRoot es un riesgo de seguridad potencial; PHP podría resolver esto teniendo una opción de configuración que especifique un directorio adicional que se pueda incluir explícitamente. Pero no es así –
Pero si tanto register.php como db_login.php están bajo la raíz html doc y sus permisos son los mismos, ¿cuál es la ganancia (en cuanto a la seguridad) para tenerlos en 2 archivos diferentes? Pensé que la idea era tener "más seguridad" alrededor de las contraseñas incluidas en db_login ...? ¿No es un riesgo que el código llegue al cliente si PHP falla? Una vez más, muchas muchas gracias por su tiempo./C –