Desativando funções do PHP com php.ini

Através do arquivo php.ini e da variável disable_function, podemos bloquear o uso de certas funções PHP que poderiam colocar em risco a segurança do sistema.

Por | @jonathanlamimkt Programação
Através do arquivo php.ini e da variável disable_function, podemos bloquear o uso de certas funções PHP que poderiam colocar em risco a segurança do sistema.

O PHP é uma linguagem de programação que faz uso de recursos do servidor e possui muitas funções a disposição dos programadores como manipular o sistema de arquivos, linhas de comando, execução de aplicações no próprio servdor, entre outras. Sem dúvida são funções úteis que permitem programação avançada, lembrando que estas funções não são utilizadas em todas as páginas desenvolvidas.

Ao estarem disponíveis estas funções, qualquer script colocado no servidor tem acesso a essas funcionalidades, podendo assim comprometer a segurança do sistema. Escrever e executar qualquer comando no shell ou rodar uma aplicação no servidor pode trazer um alto risco à segurança.

O PHP possui uma diretiva de configuração, que pode ser ativada através do php.ini para desabilitar as funções que possam colocar em risco a segurança do sistema. A variável de configuração que estamos falando é disable_functions, e declaramos as funções a serem desativadas separando-as por vírgula.

Simplesmente temos que localizar o php.ini do nosso sistema, que pode ser visto através da função phpinfo(), e editar a variável disable_functions, que estará provavelmente sem nenhuma função especificada.

disable_functions = dir,readdir,sacndir,phpinfo,exec,proc_open


Na realidade podemos colocar quantas funções quisermos, mas há um grupo mais específico de funções que pode colocar o sistema claramente em risco.

Provavelmente existam algumas que utilizemos em nossas aplicações, nesse caso não deveríamos desativá-las. Podemos pensar em trocar algumas funções por outras ou por métodos alternativos para fazer as funcionalidades sem utilizar funções que podem colocar o sistema em risco, podendo então desativá-las.

Vejam abaixo algumas funções que podem oferecer risco à segurança do sistema:

phpinfo, dir, readdir, sacndir, opendir, apache_child_terminate, apache_setenv, define_syslog_variables, escapeshellarg, escapeshellcmd, dl, eval, exec, set_time_limit, ftp_connect, ftp_exec, ftp_get, ftp_login, ftp_nb_fput, ftp_put, ftp_raw, ftp_rawlist, highlight_file, ini_alter, ini_set ini_get_all, ini_restore, mysql_pconnect, openlog, passthru, php_uname, popen, ocilogon, posix_getpwuid, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, posix_uname, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, shell_exec, system, syslog, xmlrpc_entity_decode


Pode haver alguma função faltando nessa lista, da mesa forma como haver outra que não ofereça risco e que foi listada, mas é sempre bom ter um ponto de partida para evitar problemas mais sérios.

Após atualizar a lista de funções, lembrem-se de reiniciar o Apache para que as mudanças tenham efeito.

Após desativar as funções, toda vez que uma delas for utilizada, o usuário receberá a seguinte mensagem:

Warning: phpinfo() has been disabled for security reasons in C:wampwwwinfophp.php on line 4

Desativar as funções do PHP mas críticas é uma prática extremamente conselhável no caso de várias pessoas poderem utilizar um mesmo servidor de modo compartilhado.

Até o próximo post.

Mais sobre: php funções segurança
Share Tweet
Recomendado
Comentários
Carregar comentários
Destaquesver tudo
  • ASSINE NOSSA NEWSLETTER

    As melhores publicações no
    seu e-mail

  • Preencha para confirmar