Você está na página 1de 4

Aula 09 - Segurança com PHP http://alunos.brunoavila.com.br/index.php/php-para-web-desi...

Haline Maria
Arantes
Você está cursando php para web designers ALUNOS

Segurança com PHP Bruno Ávila


Veja mais:

Socorro! Apagaram tuuuudo! Aula 09 - Segurança com PHP


Protegendo a tela da administração

Ver Perfil
Foi com os gritos de Astrogildo que fui acordado no A autenticação HTTP tá precisando de cabeça... Haline Maria
Editar Perfil
meio da noite. Astrô me ligou no meio da Controlando headers com PHP Arantes
madrugada para dizer que tinham apagado todos Autenticando com headers!
Desconectar os registros do concurso de pescaria. Fui correndo Segurança contra a má-fé humana
para a Internet quando me deparei com cena tão Listando apenas os aprovados no index

MEUS CURSOS desoladora. Nada, absolutamente nada sobrou dos Arquivos dessa aula? Milton
registros dos salmões e seus respectivos pesos. Todas as Páginas Francisco
PHP para Web
Primo Brito
E agora? Meira
Designers
Tranquilizei Astrogildo dizendo q tinha uma cópia de backup guardada dos últimos registros. E que o
que ele precisava era de segurança. Realmente vacilamos em deixar a tela de administração aberta.
Home
Ingrid Castro
Em breve reunião por teleconferência Ilhas Kodiak - Brasil, chegamos a algumas conclusões e metas.
Fórum
Vamos a elas:
Perfil
1. Proteção por usuário e senha. É necessário uma proteção para a tela de administração, com usuário
Apostila PHP para Web e senha para que ela não fique assim exposta pra todo mundo. Somente quem tiver posse desses
Alessandro da
Designers dados conseguirá acessar e remover os registros.
Silva Lima
2. Criar um registro de usuários. Para que exista uma tela de login é necessário colocar em algum local
os dados de login e senha, registrando o usuário que a gente determinar.
Anderson
3. Criar uma opção de moderação, onde antes do resultado entrar no ar você poderá aprovar ou não
Barboza da
aquele resultado. silva

Zaíra G.

Então queridos alunos, sigam-me os bons!

Protegendo a tela da administração


O que eu acho legal no Astrogildo é que ele inventa essas besteirolas dele mas pelo menos a gente
acaba aprendendo. O nosso primeiro desafio é colocar uma tela de login e senha na administração do
sistema. Existem inúmeras formas de se fazer isso porém escolhi uma das formas, a autenticação via
HTTP.

Com esse tipo de autenticação aparecerá uma tela do próprio navegador pedindo o login e senha da
administração, como esse que mostro a seguir:

1 de 4 04/12/12 01:55
Aula 09 - Segurança com PHP http://alunos.brunoavila.com.br/index.php/php-para-web-desi...

PHP entra em ação através de seu acesso ao nome de usuário e senha digitada pelo o usuário. Eles
são armazenados no superglobal $SERVER, que é similar a outros superglobals que você já usou ($
_POST, $_FILES, etc...). Um script PHP pode analisar o nome de usuário e senha digitados pelo
usuário e decidir se ele devem ser autorizado ou não a ter acesso à página protegida.

A autenticação HTTP tá precisando de cabeça...


A idéia por trás de autenticação HTTP é que o servidor possui uma página protegida e então pede ao
navegador para alertar ao usuário que é necessário colocar um login e senha. Se o usuário digita essas
informações corretamente, o navegador vai em frente e deixa você entrar na página. Este diálogo entre
o navegador e o servidor ocorre através de cabeçalhos, o que chamamos de headers, que são
pequenas mensagens com instruções específicas sobre o que está sendo solicitado ou entregue.

Headers são utilizados cada vez que você visita uma página web e não apenas quando a autenticação
é necessária. Veja no esquema abaixo como uma página web sem proteção é entregue a partir do
servidor para o navegador com a ajuda de cabeçalhos:

2 de 4 04/12/12 01:55
Aula 09 - Segurança com PHP http://alunos.brunoavila.com.br/index.php/php-para-web-desi...

Controlando headers com PHP


É possível criar e controlar headers utilizando PHP com a função header(). Essa função imediatamente
envia um cabeçalho do servidor para o navegador, onde deve ser chamado antes de qualquer conteúdo
real enviado para o navegador. Esta é uma exigência muito rigorosa - mesmo se um único caractere ou
espaço é enviado à frente de um cabeçalho, o navegador irá rejeitá-la com um erro. Por esta razão, as
chamadas para o header() deve preceder qualquer código HTML em PHP. Veja só:

Autenticando com headers!


Autenticar a página de administração usando headers envolve a elaboração de um conjunto muito
específico de header, dois na verdade, que permitem ao navegador saber como solicitar ao usuário um
login e senha antes de entrar na página. Estes dois cabeçalhos são gerados pelo código PHP no script
de administração.

Preste atenção no vídeo do Tio Bruno, ele irá mostrar pra gente como faremos essa autenticação. É
com você Tio Bruno

Segurança contra a má-fé humana


Agora o problema é outro. Desde que colocamos o sistema no ar, Astrogildo vinha se queixando de
pescadores maldosos e mentirosos que colocavam fotos claramente photoshopadas, com salmões com
o tamanho de verdadeiras baleias jubarte.

Infelizmente o PHP não tem olhos para poder verificar cada foto e barrar aqueles com evidências de
montagem. Por isso a única maneira de barrar esses registros é criando uma moderação a cada
registro novo.

A idéia é que, na tela de administração, apareça um link "aprovar" somente nos registros incluídos
recentemente.

3 de 4 04/12/12 01:55
Aula 09 - Segurança com PHP http://alunos.brunoavila.com.br/index.php/php-para-web-desi...

Para isso desenvolvemos um plano, dividido em 4 etapas.

1. Criar uma outra coluna na tabela pescaria chamada "aprovacao".

2. Criar um script responsável por modificar o status da aprovação no banco de dados, se o


administrador dizer que não está aprovado, será gravado o número zero na coluna aprovação, se for
aprovado será gravado o número 1.

3. Modificar a página de admin para incluir o link "Aprovar" somente nos registros novos e assim
possibilitar que o administrador aprove ou não o registro.

4. Mudar a página index para que sejam listados somente os registros aprovados, ou seja, os que
possuem o número 1 na coluna aprovação.

Para essa nova missão vamos chamar ele, o nosso querido, sábio e amável guru, Tio Bruno Tiburcio. É
com você!

Listando apenas os aprovados no index.php


A última modificação que você deverá fazer é no index.php para que ele possa listar apenas os
aprovados pelo moderador. Para isso é necessário passar um comando para o banco de dados dizendo
que deseja que apenas os que possuem valor 1 na coluna aprovacao apareçam na lista.

Substitua essa linha:


consulta = "SELECT * FROM pescaria ORDER BY peso DESC, data ASC";

Por essa linha:


$consulta = "SELECT * FROM pescaria WHERE aprovacao = 1 ORDER BY peso DESC, data ASC";

No comando estou dizendo:

"Selecionar tudo em pescaria onde o valor da coluna aprovacao seja 1, ordenando por peso em lista
decrescente e data por lista ascendente."

Agora é só testar e partir pra galera!

Arquivos dessa aula?


O desejo do seu querido professor é que você assista as aulas e tente fazer as alterações nos arquivos
da aula 08, incluindo a autenticação e moderação conforme mostrado na aula 09. Na próxima aula irei
disponibilizar os arquivos para que você possa comparar com o seu código e assim ficar todo serelepe.
;)

E piriri e pororó!

4 de 4 04/12/12 01:55

Você também pode gostar