2010-08-05 11 views
5

Los privilegios estándar de chmod son "644" para archivos y "755" para directorios, ¿o no?¿privilegios seguros chmod?

En la mayoría de los casos, PHP no necesita escribir en archivos o directorios. Entonces, ¿no podría tomar los privilegios de escritura de todos los grupos?

Podría asignar "444" a todos los archivos y "555" a todos los directorios.

¿No sería más seguro?

¡Gracias de antemano!

Nota: chmod() está en mi lista de PHP disable_functions.

+1

Yo sugeriría cambiar el orden de las palabras. Como está escrito, parece que _¿No sería más seguro? _ Se le pregunta acerca de la oración que está escrita justo antes de esa pregunta. – kiamlaluno

+0

Gracias, he cambiado el orden. – caw

Respuesta

3

Los permisos predeterminados para los archivos y directorios recién creados se establecen mediante la variable de entorno umask. El propietario y la raíz del archivo pueden cambiar los permisos.

Si no necesita usar chmod en su aplicación, déjelo en su lista de inhabilitados. La forma en que debes mirar la seguridad es: muchas personas más inteligentes que yo ahora han convertido a chmod en una de las partes más seguras de mi aplicación. Por lo tanto, gastaré mi tiempo disponible para asegurar las otras partes.

Hacer su aplicación de solo lectura, en el servidor, está bien si lo automatiza. Sin embargo, cuando realiza cambios en el código de la aplicación, le resultará muy difícil. En algún momento, irá y volverá, realizará algunos cambios de código y los probará en el servidor ... y luego olvidó restablecer los permisos de su archivo/directorio nuevamente para que sean de solo lectura.

Si solo tiene 1 cuenta de usuario en su máquina de producción, solo me quedaré con los permisos predeterminados; es probable que las cosas se administren para usted. O puede eliminar los permisos de grupo y "otros", como se describe a continuación.

Una configuración de producción típica sería tener un grupo de aplicaciones al que pertenezca. También desea un usuario independiente para ejecutar su aplicación php. Mantenga todos los permisos para el propietario y el grupo, y elimine todos los permisos de "otros".De esta manera:

  • Los desarrolladores mantienen sus inicios de sesión individuales: puede hacer un seguimiento de quién hizo qué y cuándo.
  • Usted y otros desarrolladores pueden copiar el nuevo código en el servidor.
  • La aplicación puede ejecutar el código.
  • La aplicación no puede acceder a nada fuera del código.
  • Ningún otro usuario más puede ver su código.

Supongo que es el trabajo de otra persona administrar su servidor de producción? Pasarán tiempo para asegurarse de que nadie pueda iniciar sesión y husmear. Si bien es necesario asegurarse de que nadie pueda ejecutar comandos del sistema operativo, creo que el mejor lugar para comenzar es conocer xss. La configuración predeterminada del servidor php debería estar bien. La parte menos segura de la aplicación es la parte que solo has visto. Si alguien va a acceder a una llamada al sistema, lo más probable es que sea a través de un formulario. Incluso si elimina llamadas al sistema, los formularios son aún susceptibles de almacenar javascript. A menos que esté almacenando tarjetas de crédito en su aplicación, el objetivo más probable sería la contraseña/sesión en el navegador de su usuario.

+0

Gracias por esta respuesta detallada. Tienes razón, alguien más está cuidando mi servidor. Pero estoy haciendo esta pregunta ya que alguien logró subir un archivo remoto a mi directorio raíz e insertó código malicioso en varios otros archivos llamando a este script remoto. Si haces que los directorios y archivos no se escriban, esto no debería volver a suceder, ¿verdad? – caw

+1

Lamentablemente, algo podría pasar de nuevo. Cerraría una pequeña funcionalidad, pero no impediría el acceso. En algún lugar del sitio, hay acceso para hacer _algo_. Crear un archivo en su directorio raíz está más abajo en la pila de programas. Debes eliminar el espacio por encima de él. Si aún no puede identificar qué era, cambiar los permisos de su archivo podría ayudar a corto plazo. Podría evitar que alguien automatice este truco exacto. Apestaría arreglar su sitio, solo para tener un bot que lo monitoree y lo rehaga. Este sería un buen momento para agregar más a disabled_functions (ty SirDarius) –

1

No es más seguro ya que PHP siempre puede hacer chmod 777 incluso en archivos de más de 000 caracteres (si son propiedad de PHP). Sin embargo, es más seguro ya que no puede escribir este archivo sin chmoding antes.

+0

Pero si chmod() está en la lista disable_functions de PHP, es muy seguro, ¿o sí? – caw

+0

Quizás. No sé lo suficiente de PHP para saber si esto funciona. – Scharron

+0

Normalmente, si chmod está deshabilitado, desea poder modificar los permisos. Compruebe si la función umask está habilitada. ¡Con esta función puedes alterar los permisos estándar de un archivo! – VeeWee

0

chmod() está en la lista de mi PHP disable_functions.
¿No sería más seguro?

El uso de disable_functions es posible desactivar funciones específicas.
Si chmod() aparece en la directiva disable_functions, no es más seguro de usar; simplemente está deshabilitado, y el código PHP que está usando chmod() generará una advertencia.

La directiva disable_functions no se debe confundir con las directivas Safe Mode. disable_functions está activo incluso cuando la directiva safe_mode está configurada en 0; cuando safe_mode está habilitado, some functions están deshabilitados, o están restringidos.

Observar que Modo seguro se considera obsoleto, en PHP 5.3; esto significa que la directiva aún se acepta en PHP 5.3, pero ya no se puede usar en ningún momento.

+0

Esta es una respuesta excelente, pero a la pregunta incorrecta, ¿no es así? : P –

+0

El OP dijo que 'chmod()' aparece en la directiva 'disable_functions' y pregunta _¿No sería más seguro? _ Respondí eso. – kiamlaluno

+0

En un comentario, el OP también preguntó _Pero si chmod() está en la lista disable_functions de PHP, es muy seguro, ¿es? _ – kiamlaluno

1

Lo siento por mi inglés.

Estoy pensando en tres posibles razones.

  1. Comprobar safe_mod bandera en su php.ini, si es safe_mod EN que tal vez obtener algunos problemas con esa función.
  2. Si tiene plesk, tiene problemas si crea carpetas o archivos con otro usuario que no se haya creado con plesk.
  3. Es probable que se encuentre perdido una biblioteca de php.
Cuestiones relacionadas