PHP Plugin Security

0

He estado trabajando en un sistema de automatización del hogar desde hace poco más de un año y le he agregado un sistema de complementos. También he agregado para que otros puedan enviar sus complementos y, si los acepto, se agregan automáticamente a todos mis sistemas conectados a Internet. Ahora no hay nada malo con el sistema de complementos, pero estoy muy preocupado con respecto a la seguridad.

Todavía quiero que el sistema de complementos pueda ejecutar el código PHP normal y hacer lo que se supone que debe hacer el complemento, pero no quiero el código como, por ejemplo:

echo file_get_contents("../inc/db.php");

para trabajar. Quiero que el complemento se encuentre en un espacio aislado en la medida en que aún pueda funcionar como un complemento normal y aún estar lo suficientemente restringido para no tocar o leer ninguno de los archivos en los que se está ejecutando el sistema.

La razón por la que me lo pregunto es porque quiero que el usuario pruebe su complemento antes de que lo envíe, obviamente, pero tengo miedo de que si el usuario ejecuta el código PHP por sí mismo, podría comprometer el sistema. / p>

¿Es posible arreglar esto de alguna manera? Si ayuda, el complemento se ejecuta en una carpeta diferente a la del resto de archivos.

También

¿Es posible restringirlo para que el complemento no pueda ejecutar ciertas funciones como shell_exec, exec, passthru, system sin deshabilitarlo completamente en php.ini?

    
pregunta user3885139 14.02.2015 - 00:43
fuente

2 respuestas

2

La respuesta breve es que no podrá cumplir con sus requisitos.

Una respuesta más larga es que quizás podría escribir su propio preprocesador para analizar un archivo enviado en busca de cosas que no le gustan, pero esto es realmente complejo. Un enfoque alternativo sería implementar el complemento en un controlador php secundario con una configuración deshabilitada muy extensa de deshabilitaciones que se ejecuta en un contenedor (idealmente un servidor separado) y acceder al complemento como una llamada de servicio web. Pero me estoy saltando una GRAN cantidad de detalles aquí que realmente necesitas entender antes de que esto sea seguro de alguna manera, y por la forma en que has formulado la pregunta, creo que tienes mucho que aprender antes. estaría en condiciones de probarlo (hay MUCHO más que las funciones enumeradas que deben desactivarse).

    
respondido por el symcbean 14.02.2015 - 02:21
fuente
1

Para realmente "guardar" sus complementos desde su aplicación / sistema, creo que necesita implementar una API que solo permita el acceso a ciertos datos de la aplicación y limitar las funciones php que no desea que usen los complementos.

Ya que estás usando php, existe el paquete php-fpm que permite ejecutar múltiples instancias de php (incluso como usuarios diferentes) . Estas instancias pueden tener configuraciones ini separadas que le permiten ejecutar complementos como un usuario menos privilegiado con configuraciones muy limitadas de php_admin y conectarse internamente a la API de su aplicación.

Esto, por supuesto, agregará mucho trabajo inicialmente, pero valdría la pena ya que la seguridad es importante para ti.

    
respondido por el Alasjo 14.02.2015 - 10:33
fuente

Lea otras preguntas en las etiquetas