Deshabilitar funciones PHP inseguras / peligrosas

15

Normalmente, la descripción de mi trabajo me limita a la revisión de código de las aplicaciones web. Más recientemente, se me ha pedido que ayude con alguna optimización de PHP del lado del servidor donde, aunque estoy familiarizado con ella, me falta experiencia.

Me he encontrado con una configuración llamada:

disable_functions

¿Debo tener en cuenta alguna implicación al utilizar esta configuración (aparte de la función obvia x () se desactivará y cualquier aplicación que use la función x () no funcionará)?

Si es algo de lo que debería aprovecharme, puedo crear una lista de muchas funciones que podrían ser peligrosas, sin embargo, algunas pueden ser necesarias independientemente. ¿Alguien tiene una lista, o tiene algunas sugerencias para agregar en cuanto a qué funciones se deben deshabilitar y por qué en caso de que me olvide o me olvide de algunas?

Cualquier información sería apreciada ya que, aunque conozco muchas funciones no seguras, falta la experiencia de configuración de mi servidor.

EDIT : para aclarar cualquier duda sobre si esto está dentro o fuera del tema, se me pidió que ayudara a OPTIMIZAR el entorno PHP para aumentar la SEGURIDAD, pero estoy preguntando específicamente sobre lo mencionado anteriormente. ajuste de configuración. :)

    
pregunta Purge 29.12.2010 - 21:40
fuente

6 respuestas

14

Hay varias cosas que deben entenderse aquí:

  1. La lista de funciones PHP peligrosas se encuentra aquí: enlace . En serio, casi cualquier función de PHP puede ser peligrosa dado el contexto correcto. Es probable que strlen y similares sean seguros, pero cualquier función que habla con el mundo exterior puede traer sorpresas si el resto del código no es seguro.
  2. Si desea asegurar el sitio, la seguridad debe estar en todo el código, simplemente deshabilitando algunas funciones aquí y no va a funcionar, solo lo dejará ciego y dará lugar a una codificación descuidada.
  3. Hay capacidades en PHP que pueden ayudarle a escribir un código más seguro, sin embargo, no harán que el código seguro sea inseguro. Busque open_basedir y allow_url_fopen como ejemplo.
  4. Puedes usar disable_functions para prohibir algunas acciones que consideras peligrosas, sin embargo, solo ciertas clases de acciones pueden inhibirse de esta manera. Por ejemplo, puede deshabilitar exec,shell_exec,popen,passthru,proc_open,system,pcntl_exec y esto probablemente evitará que se ejecuten programas externos desde su código, pero la mayoría de las cosas que hacen estos programas también pueden hacerse por medio de PHP. Y tratar de evitar cosas como "escribir un archivo" probablemente no funcione, debe hacerlo a través de los permisos del sistema operativo, no a través de PHP. Entonces, defina qué es exactamente lo que quiere prohibir primero y luego vea si es posible, teniendo en cuenta que puede ser imposible.
  5. Lea el capítulo de seguridad en el manual de PHP. Lea algunos libros de seguridad de PHP . La seguridad no se realiza simplemente configurando security=On en php.ini , desafortunadamente.
respondido por el StasM 31.12.2010 - 02:18
fuente
3

Los únicos problemas de los que tiene que preocuparse es deshabilitar las funciones que realmente son necesarias. Las funciones de desactivación definitivamente pueden ayudar a prevenir el abuso. De hecho, existen funciones como exec, shell_exec, etc. que casi nunca deben usarse en un entorno de alojamiento compartido.

En lugar de confiar en esta función, debería considerar trabajar en seguridad general. Por ejemplo, si usas suPHP o similar, puedes prevenir una gran cantidad de ataques y hacer que asegurar las cosas sea un poco más fácil. Deshabilitar funciones debería ser lo último en lo que se preocupe, su servidor debe estar seguro antes de que se preocupe por eso.

    
respondido por el devicenull 30.12.2010 - 05:34
fuente
2

Si está alojando un sitio web o un servidor web, existen funciones en PHP que se pueden usar para explotar el sitio web o el servidor web utilizando scripts PHP y el uso de esta función peligrosa pirata informático puede obtener un control completo sobre el servidor web hasta el nivel raíz .

La Lista de funciones es peligrosa en el desarrollo de PHP

"apache_child_terminate, apache_setenv, define_syslog ', vp, fp, fp, fput, ftp; openlog, passthru, php_uname, phpAds_remoteInfo, phpAds_XmlRpc, phpAds_xmlrpcDecode, phpAds_xmlrpcEncode, popen, posix_getpwuid, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, posix_setuid, posix_uname, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, shell_exec, syslog, sistema, xmlrpc_entity_decode"

Cómo deshabilitar funciones peligrosas en PHP

  1. Localice su archivo "php.ini" .
  2. luego encuentra disable_functions=
  3. a continuación, agregue todas las funciones anteriores en deshabilitar funciones como

    disable_functions="eval, system"

^^ Aquí solo he deshabilitado la función 2, puede deshabilitar cualquier número de funciones dando una lista de funciones a disable_functions="lista de funciones que se deshabilitarán separadas por comas"

Si quiere que lo que cada una de las funciones anteriores signifique exactamente, busque aquí la función anterior

enlace

    
respondido por el mr_eclair 30.12.2010 - 07:52
fuente
2

Por favor, NO considere deshabilitar_funciones una función de seguridad.

Consulte mi respuesta anterior a una pregunta diferente sobre stackoverflow, incluso PHP no considera disable_functions y es similar a Características de seguridad reales.

    
respondido por el lukash 22.08.2014 - 03:31
fuente
1

No hay funciones inherentemente peligrosas en PHP. OTOH es muy fácil escribir programas muy inseguros usando la funcionalidad central de PHP. En mi humilde opinión, 'disable_function' es un placebo para las personas que no pueden o no quieren asegurar sus sistemas adecuadamente.

No me malinterpretes: como administrador de sistemas, hay muchas otras cosas que deberías hacer para proteger tu servidor, como establecer open_basedir siempre que sea posible, imponer un modelo de permisos fuerte, mantener las rutas de inclusión fuera de la raíz del documento ( o con el acceso directo a HTTP deshabilitado para esos directorios) y mucho más.

  

Me han pedido que ayude con algunas optimizaciones de PHP del lado del servidor

¿Estamos hablando de optimización o seguridad aquí?

    
respondido por el symcbean 30.12.2010 - 11:05
fuente
0

Aunque no he tocado PHP en unos cuantos años, por lo que he leído

disable_functions

es más apropiado para situaciones de alojamiento compartido.

    
respondido por el Steve 29.12.2010 - 23:14
fuente

Lea otras preguntas en las etiquetas