Es obvio que PHP+MySQL+Apache es una tecnología web muy popular. Esta combinación es poderosa, escalable y sigue siendo gratuita. Sin embargo, la configuración predeterminada de PHP no es adecuada para sitios web que ya están en línea. A continuación, podemos mejorar la política de seguridad de PHP modificando el archivo de configuración predeterminado.
0x01: Deshabilitar la función de procesamiento de archivos de URL remota
Al igual que la función de procesamiento de archivos de Fopen, que acepta los parámetros de la Rul del archivo (por ejemplo: Fopen ('http: //www.yoursite.com','r')).), Esta función puede acceder fácilmente a los recursos remotos. Sin embargo, esta es una amenaza de seguridad muy importante. Deshabilitar esta función para limitar la función de archivo es una buena opción. Realice las siguientes modificaciones en el archivo php.ini:
La copia del código es la siguiente:
tampable_url_fopen = apagado
0x02: Deshabilitar el registro de variables globales
En las versiones antes de 4.2.0, PHP utilizó variables globales como entrada. Esta función se llama registro_globals. En aplicaciones web, causó muchos problemas de seguridad porque permite a los atacantes operar fácilmente las variables globales en algunos casos. Afortunadamente, la función en 4.2.0 está deshabilitada de forma predeterminada. Es muy peligroso. Esta función debe deshabilitarse bajo cualquier circunstancia. Si algunos scripts requieren esta característica, entonces hay una posible amenaza de seguridad para este script. Modificar pnp.ini para deshabilitar esta función:
La copia del código es la siguiente:
registrar_globals = apagado
0x03: Operaciones de lectura y escritura de PHP restringidas
En muchos procesos de desarrollo web, los scripts PHP deben leer y escribir operaciones en el sistema de archivos local, como/var/www/htdocs/archivos. Para mejorar la seguridad, puede modificar los permisos de lectura y escritura de los archivos locales:
La copia del código es la siguiente:
Open_Basedir =/var/www/htdocs/archivos
0x04: límite de posar
Limitar el tiempo de ejecución de PHP, el uso de la memoria, los datos de publicación y carga es la mejor estrategia, y se puede hacer la siguiente configuración:
La copia del código es la siguiente:
max_execution_time = 30; Tiempo de ejecución de script máximo
max_input_time = 60; El tiempo máximo pasó la entrada de analización
memoria_limit = 16m; Memoria máxima utilizada por un script
upload_max_filesize = 2m; Tamaño de archivo de carga máxima
post_max_size = 8m; Tamaño de publicación máxima
0x05: Desactivar mensajes de error y habilitar el registro
En la configuración predeterminada, PHP emitirá un mensaje de error al navegador. Esta configuración predeterminada es la configuración más razonable durante el proceso de desarrollo de aplicaciones. Sin embargo, también puede filtrar cierta información de seguridad al usuario, como la ruta de instalación y el nombre de usuario. En los sitios web que se han desarrollado, es mejor deshabilitar el mensaje de error y emitir el mensaje de error al archivo de registro.
La copia del código es la siguiente:
display_errors = apagado
Log_errors = ON
0x06: ocultar el archivo php
Si el archivo PHP no está oculto, podemos obtener la versión del servidor PHP a través de varios métodos, por ejemplo: http://www.example.com/script.php?=phpb8b5f2a0-3c92-11d3-a3a9-4c7b08c10000
Obviamente, no queremos que los usuarios obtengan directamente la versión PHP del servidor de su sitio web. Afortunadamente, hay un interruptor en php.ini que puede deshabilitar esta función:
La copia del código es la siguiente:
expose_php = apagado
0x07: Configuración de modo seguro
Por defecto, PHP se puede configurar en modo seguro. En este modo, Apache prohíbe el acceso a archivos, variables de entorno y programas binarios. En modo seguro, el mayor problema es que solo el propietario del archivo puede acceder a este archivo PHP. Si muchos desarrolladores desarrollan conjuntamente este programa, dicha configuración no es realista. Cuando necesita acceder a un archivo PHP, debe modificar el propietario del archivo. Otro problema es que otros programas no pueden acceder a estos archivos PHP. La siguiente configuración puede modificar los permisos del archivo a un grupo de usuarios en lugar de un solo usuario.
La copia del código es la siguiente:
safe_mode = apagado
safe_mode_gid = on
Al habilitar SAFE_MODE_GID, puede acceder a archivos PHP utilizando este grupo de Apache. El modo seguro también es muy efectivo para prevenir la ejecución binaria, sin embargo, los desarrolladores quieren poder ejecutar algunos archivos binarios en ciertas situaciones específicas. En estos casos especiales, puede colocar el archivo binario en un directorio, por ejemplo (/var/www/binarios), y puede hacer la siguiente configuración:
La copia del código es la siguiente:
safe_mode_exec_dir =/var/www/binaries
Finalmente, a través de la siguiente configuración, puede acceder a las variables de entorno del servidor, proporcionando un prefijo "_" que solo puede acceder a las variables de entorno con prefijos especificados:
La copia del código es la siguiente:
safe_mode_allowed_env_vars = php_
0x08: restringir el acceso público a archivos con nombres de sufijo específicos
Debido a razones de seguridad, los usuarios públicos no pueden acceder a muchos archivos con nombres de sufijo específicos. Por ejemplo, los archivos con sufijo .Inc contienen información confidencial, como la información de conexión MySQL. Si no hay una configuración adecuada, entonces cada usuario puede acceder a este archivo de configuración. Para mejorar la seguridad del sitio web, debe configurar lo siguiente en el archivo ..htaccess:
La copia del código es la siguiente:
<FilesMatch>
El pedido permite, negar
Negar de todos
</filesmatch>
0x09: Resumen
La configuración predeterminada de PHP es para desarrolladores. Si el sitio web es para una gran cantidad de usuarios, se recomienda reconfigurar PHP.