PHP para iniciantes: 3 dicas de ouro


Confira aqui algumas regras de ouro que valem para qualquer código PHP criado para a web. Se você aprende e aplica esses princípios, seu código será mais seguro e sua vida de programador um pouco mais tranquila.

‘Escape’ seu código

A maioria dos scripts PHP é produzido com vistas à algum tipo de ‘output’. Depois de criar o código, você precisa se certificar de que o tipo de saída esteja compilando devidamente. Se você está fazendo uma página HTML ou um arquivo XML, o PHP não pode decidir isso automaticamente. Desse modo, você precisa declarar qual será a saída do arquivo.

Para entender melhor, é útil saber como funciona HTML. O M significa Mark-up que, em outras palavras, significa que o arquivo não contém apenas conteúdo, mas também eu mostra comandos que definem como página será mostrada. Os comandos marcam as seções de conteúdo (como títulos, texto em negrito, scripts, etc.) ou incorporam caracteres especiais  e imagens por exemplo. Para separar conteúdos de comandos, o HTML reserva três caracteres: ‘<‘,’>’ e ‘&’. As tags HTML são envolvidos com os caracteres ‘<‘ e ‘>’ , por isso, há menos que você queira confusão, você não deve usá-los para qualquer outra coisa no conteúdo.

Se for necessário usar esses caracteres você precisará usar um recurso chamado ‘HTML entities’. Eles são comandos que ‘embedam’ caracteres especiais e evitam que eles entrem em conflito com o seu código. Isso se aplica especialmente aos quatro caracteres abaixo:

Carácter significado ‘entities’
< menos que &lt;
> maior que &gt;
& e comercial &amp;
Double-quote &quot;

Esta ferramenta ajuda você a ter o controle desses elementos, substituindo automaticamente os caracteres especiais pelas ‘entities’.

Use um filtro de ‘input’

Hoje em dia, o PHP é uma das linguagens de script mais utilizados na web. Justamente porque é tão fácil aprender o básico da linguagem e sair programando, muitas pessoas publicam códigos inseguros online. Existem dezenas de maneiras para você estragar seu código PHP, mas os maiores problemas acontecem quando o programador esquece de filtrar o ‘input’, ou declarar o ‘escape output’ do código.

Por incrível que pareça, estes não são erros que apenas iniciantes cometem: muitos scripts populares de PHP, escritos por grandes comunidades de programadores, têm updates de segurança por causa de filtragem de ‘input’ mal feita. A falta de filtragem de ‘input’ pode expor o servidor e os dados para um ataque facilmente, e atualmente muitos desses ataques são automatizados. Filtragem e Escaping são dois princípios essenciais em codificação da web que você precisa para aplicar qualquer linguagem que você usa. Obtenha detalhes sobre como fazer o ‘filter_input’ aqui.

Conversando com a base de dados

Não importa se você está lendo ou gravando um banco de dados, usar ‘prepared statements’ é a maneira mais fácil, conveniente e segura de se comunicar com ela.

Olhando para um arquivo HTML, você vai ver que ele têm tanto o conteúdo como os comandos (que são, como já citamos, as instruções sobre como mostrá-lo). As consultas SQL são escritas da mesma maneira, o que pode levar ao mesmo problema, ou seja, a confusão entre comandos e conteúdos.  Em HTML isso gera layouts quebrados ou ataques de ‘cross-site scripting’. Se o mesmo ocorre com bancos de dados, todos os seus dados viram isca fácil para ataques que podem roubar ou danificar seus dados.

Para o HTML, a única resposta é sempre declarar a saída do seu conteúdo para que ele não seja interpretado como tags HTML. Você pode fazer isso com seu SQL também, usando funções de escape para seu banco de dados (como mysql_real_escape_string ()), mas há uma maneira melhor, que é a utilização de ‘prepared statements’. Com este método, o seu comando e o conteúdo são enviados ao longo de canais separados para o banco de dados, o que significa que você vai precisar se preocupar muito menos com ataques do tipo “injeção de SQL”.

Abaixo você pode conferir um exemplo de ‘prepared statements’:

Dê uma olhada na instrução SQL do exemplo abaixo. Você pode ver que em vez de colocar o $title, nós colocamos um espaço reservado em vez disso, chamado :title, e então nós “ligamos” o valor que queremos no espaço reservado. Assim, o SQL e os dados são passados para a base de dados separadamente:

php

Aqui você confere o exemplo completo:

phpfull[

Use essas três dicas para começar a programar com mais segurança. Para continuar aprendendo, além de ficar ligado aqui no blog, leia mais materiais nas fontes que usamos para escrever este post como o portal PHP.net.

Leonéia Evangelista

Leonéia Evangelista

é bacharel em Comunicação Digital pela Unisinos e mestre em Bibliotecas Digitais pelo programa Digital Library Learning (Erasmus Mundus). Trabalha com web há mais de 8 anos e atualmente cursa MBA em Marketing Estratégico.
Leonéia Evangelista

Comentários

comentário(s)