Configurando o PHP.ini corretamente para segurança no PHP

Melhores práticas para configurar o PHP.ini de forma segura, evitando exposição de erros, execução de código perigoso e acessos indevidos.

Introdução

A configuração do arquivo php.ini é um dos primeiros passos para garantir a segurança de uma aplicação PHP. Pequenos ajustes podem evitar a exposição de erros, a execução de códigos perigosos e reduzir a superfície de ataque.

1. Ocultando erros no ambiente de produção

Nunca exiba erros diretamente ao usuário, pois isso pode revelar detalhes internos da aplicação:

display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log

Isso garante que erros sejam registrados em logs em vez de mostrados na tela.

2. Restringindo execução de funções perigosas

Algumas funções podem permitir execução remota de comandos e comprometer a segurança. Desative funções perigosas no php.ini:

disable_functions = exec, system, shell_exec, passthru, eval, popen, proc_open

Isso impede que código malicioso execute comandos no servidor.

3. Protegendo uploads de arquivos

Evite ataques via upload de arquivos restringindo tipos e tamanhos:

file_uploads = On
upload_max_filesize = 2M
post_max_size = 3M

Isso impede que arquivos muito grandes sejam enviados para o servidor.

4. Restringindo inclusão de arquivos remotos

Para evitar ataques de Remote File Inclusion (RFI), desative a inclusão de arquivos remotos:

allow_url_fopen = Off
allow_url_include = Off

Isso impede que arquivos externos sejam carregados de forma insegura.

5. Reforçando segurança das sessões

Para evitar ataques de sequestro de sessão, configure os cookies de sessão corretamente:

session.cookie_httponly = 1
session.cookie_secure = 1
session.use_strict_mode = 1

Isso protege os cookies de sessão contra acessos indevidos e uso indevido por atacantes.

Conclusão

A configuração do php.ini é essencial para reforçar a segurança de uma aplicação PHP. Desativar funções perigosas, ocultar erros, proteger uploads e configurar corretamente as sessões são medidas fundamentais para evitar vulnerabilidades e garantir a integridade do sistema.

O arquivo php.ini contém diversas configurações que podem impactar diretamente a segurança de uma aplicação PHP. Uma configuração inadequada pode expor erros sensíveis, permitir a execução de códigos maliciosos e comprometer a integridade do servidor.

Para garantir uma aplicação mais segura, é essencial revisar e ajustar as configurações do php.ini, restringindo funções potencialmente perigosas, protegendo sessões e evitando exposição desnecessária de informações. Além disso, manter o PHP atualizado garante que novas vulnerabilidades sejam corrigidas e exploradas por atacantes.

Com essas práticas, é possível reduzir significativamente os riscos de ataques e aumentar a segurança geral do ambiente PHP.

Algumas aplicações:

  • Evitar exposição de erros e informações sensíveis.
  • Impedir execução de comandos perigosos no servidor.
  • Restringir uploads de arquivos potencialmente maliciosos.
  • Garantir que sessões de usuários sejam protegidas contra ataques.

Dicas para quem está começando

  • Sempre desative display_errors em ambientes de produção.
  • Utilize disable_functions para bloquear funções que podem comprometer a segurança.
  • Defina um limite de tamanho para uploads de arquivos no servidor.
  • Desative allow_url_include para evitar execução de arquivos remotos.
  • Ative session.cookie_httponly para proteger cookies contra roubo via JavaScript.

Contribuições de Renata Oliveira

Compartilhe este tutorial: Como configurar o PHP.ini corretamente para melhorar a segurança da aplicação?

Compartilhe este tutorial

Continue aprendendo:

Como revisar e auditar o código PHP para identificar vulnerabilidades de segurança?

Métodos eficazes para revisar e auditar código PHP, garantindo que vulnerabilidades de segurança sejam identificadas e corrigidas antes de serem exploradas.

Tutorial anterior

Como corrigir o erro "Parse error: syntax error, unexpected '}'" no PHP?

Esse erro ocorre quando há um fechamento de bloco inesperado no código PHP. Saiba como identificar e corrigir esse problema.

Próximo tutorial