Escribir errores en el archivo de registro de Apache desde PHP, ¿hay alguna trampa?

2

Estoy actualizando una aplicación para escribir errores ligeramente más detallados en el archivo de registro del sistema (en este caso, /var/log/apache2/mysite_error_log ). Espero no estar haciendo la pregunta estúpida proverbial, pero ¿hay algún problema potencial con la inclusión de datos aprobados por el usuario, como argumentos no válidos pasados a una página en el archivo de registro de Apache?

El archivo de registro es de texto y de lectura / escritura en el servidor web, pero no quiero escribir texto / datos potencialmente dañinos que podrían explotarse si el archivo de registro se abre / lee posteriormente a través de la línea de comandos.

    
pregunta a coder 07.11.2014 - 19:30
fuente

2 respuestas

1

Sí. Estos datos deberían ser útiles para ayudar a depurar errores, sin embargo, hay al menos algunos (quizás más) posibles riesgos de seguridad a considerar:

  • ¿Alguna de la privacidad de los datos es sensible (como números de seguridad social, contraseñas, direcciones, etc.)? Si es así, podría haber problemas de privacidad, pero la mayoría de esas preocupaciones ya deberían existir en el sitio web. de todas formas.

  • El registro de las contraseñas sería excepcionalmente peligroso ya que sería un almacenamiento de texto simple de la contraseña del usuario, lo cual es muy malo. Si un atacante pudiera abrir el archivo de registro, podría mirar y luego ver todas las contraseñas ingresadas. En este punto, un administrador también puede ver la contraseña del usuario, lo que no se supone que suceda (porque el administrador podría hacerse pasar por el usuario), por lo que recomiendo no registrar el contenido de las contraseñas.

  • ¿Están los archivos adecuadamente protegidos? Solo deben ser accesibles por los administradores. El sistema debe parchearse constantemente para disuadir a los posibles atacantes de elevar su privilegio a la raíz para leer los datos.

respondido por el Jonathan 07.11.2014 - 20:00
fuente
1

¡No escribas directamente los archivos! Utilice un servicio de registro (o, en el caso del error_log de Apache, simplemente imprima en el stderr). Y asegúrese de que los registros estén fuera de la raíz del documento; si se puede engañar al servidor web para que los sirva como archivos PHP, tiene una gran vulnerabilidad de inyección de código.

  

si el archivo de registro se abre / lee posteriormente a través de la línea de comandos.

Eso es complicado. ¿Abierto con qué? Transformar la salida con (por ejemplo) htmlentities debería reducir un poco la superficie de ataque, pero sospecho que nos dirigimos a la seguridad del sombrero de hojalata aquí.

    
respondido por el symcbean 08.11.2014 - 02:12
fuente

Lea otras preguntas en las etiquetas