Desenvolver uma aplicação web não é uma das tarefas mais fáceis do mundo. Embora cada vez mais ferramentas e linguagens de programação prometam facilitar todo o trabalho, sempre haverá uma questão que jamais será resolvida sem alguma expertise da parte do desenvolvedor: a segurança. Além de garantir a segurança dos usuários e das transações, um sistema web seguro também deve garantir a integridade do servidor que o hospeda. Por esse motivo, os profissionais da área devem estar sempre preparados e bem informados sobre as principais ameaças e as técnicas que ajudam a evitá-las. E, pode apostar, essa não é uma tarefa tão simples quanto parece: há uma infinidade de procedimentos que podem ser adotados para evitar uma infinidade maior ainda de acessos ou uso indevido de dados e recursos. Pensando nisso, separamos algumas dicas que podem ajudá-lo a garantir a segurança do seu sistema desenvolvido em PHP. Confira-a:
1. Sempre use nomes de cookies de sessão diferentes
Para evitar que ocorra os chamados roubos de sessão, é sempre bom definir nomes diferentes para os cookies de sessão. Por exemplo, o nome padrão utilizado pelo PHP para guardar ids de sessão é “PHPSESSID”. Logo, mudar esse nome dificultará a ação de qualquer cracker que queira se aproveitar da sua aplicação. Outra dica interessante é usar nomes diferentes para cada acesso e vinculá-lo a algo do acesso do visitante.
2. Só acesse cookies de sessão via HTTP
Embora os ids de sessão sejam armazenados em cookies por padrão no PHP, o atributo session.cookie_httponly não vem como padrão. Ativando-o você garante que os cookies de sessão só poderão sre acessados via HTTP, impedindo que scripts JavaScript, por exemplo, sejam barrados ao tentar fazer o mesmo. Essa á uma ótima dica para evitar principalmente ataques XSS. Para mudar a configuração, vá até o arquivo php.ini do PHP, procure pelo atributo session.cookie_httponly e defina seu valor como 1.
3. Valide a origem da sessão em todas as páginas
Garanta que o usuário que se autenticou no sistema é o mesmo que está acessando a página atual validando o User Agent e o IP do dono da sessão em todas as páginas.
4. Evite Spoofing de formulário
O Spoofing de formulário ocorre quando uma postagem é feita em um dos formulários do seu site de um local inesperado e/ou desconhecido. Neste caso, uma técnica que pode ajudar a evitar esse tipo de ataque é a utilização de um token. Nele, você pode guardar uma chave na sessão no momento em que o formulário é exibido e, quando os dados forem postados, utilizá-la para comparar se a chave enviada é a mesma gravada na sessão anteriormente. Vale lembrar, no entanto, que essa dica deve ser implantada em formulário mais simples – para casos mais complexos, a alternativa mais efetiva contra robôs continua sendo o uso do Captcha.
5. Valide os arquivos enviados ao servidor
É cada vez mais raro encontrarmos sistemas que não oferecem a possibilidade de enviarmos algum arquivo para armazená-lo no servidor. Se o seu utiliza esse recurso, então nunca esqueça de validar os uploads antes de salvar os arquivos no servidor. Dessa forma você evita que arquivos maliciosos sejam armazenados e causem algum dano ao seu servidor e sistema. Vale ressaltar, no entanto, que validar apenas a extensão do arquivo já não é mais suficiente, pois ela pode ser manipulada no momento do envio. Para uma solução completa, é preciso verificar o cabeçalho do arquivo.
6. Impeça que suas pastas sejam acessadas via HTTP
No PHP, inúmeras configurações ficam armazenadas em arquivos com extensões ini, XML, JSON, txt e outras. O pior de tudo é que o conteúdo desses arquivos é visível quando acessados pelo navegador, o que acaba sendo um problema se ali contiver informações confidenciais. Para evitar esse problema, a melhor alternativa é proteger as pastas que contêm esses arquivos contra acessos externos. Para isso, basta colocar esses arquivos fora da pasta public_html ou adicionar um arquivo .htaccess com as seguintes configurações nas pastas que se deseja proteger:
<Files **>
order allow, deny
deny from all
</Files>
7. Tenha cuidado com as permissões em pastas
Sempre tenha um pé atrás e restrinja o acesso às pastas do servidor. Adicione regras de execução e escrita somente em pastas aproriadas.
8. Tenha um plano em caso de comprometimento do sistema
Sempre somos levados a pensar que o pior não acontecerá conosco. Contudo, como o seguro morreu de velho, é sempre bom ter um plano de ação para o caso de você descobrir que seu sistema foi comprometido. Uma boa dica é desabilitar as contas para que uma investigação seja conduzida a fim de descobrir a falha explorada pelos crackers. Depois disso, defina uma estratégia de reativação das contas utilizando e-mails.
9. Fique sempre de olho no seu sistema
Utilize programas de identificação de vulnerabilidades. Além de identificar os pontos fracos da sua aplicação, esses sistemas oferecem informações sobre elas e ainda podem lhe orientar sobre como resolvê-las.