Tratamento de dados fornecidos pelo usuário: projetando sistemas com mais segurança

De uns tempos para cá comecei a notar que mais gente está programando e conseqüentemente mais gente está entrando no mercado de trabalho precocemente. Estão iniciando sua viagem pelo maravilhoso mundo do desenvolvimento web muito inocentemente, no entanto não sabem eles - os desenvolvedores newbies ou negligentes - que existem usuários maliciosos olho no seu sistema.

[ Hits: 87.982 ]

Por: Ragen Dazs em 07/04/2004 | Blog: http://www.orkut.com


Início



Desenvolvido: Allyson Francisco de Paula Reis.
Nickname:     Ragen
e-mail:       ragen@oquerola.com


Este e outros tutoriais podem ser obtidos em:
http://www.frontthescene.com.br/
http://cdm.frontthescene.com.br/
http://br.groups.yahoo.com/group/clube_dos_mercenarios/ (histórico)
http://br.groups.yahoo.com/group/frontthescene/ (histórico)

Todas as informações e exemplos contidos nesse tutorial possuem somente propósitos educacionais. Não me responsabilizo pelo mau uso do mesmo.

Introdução


Olá senhores, aqui estou novamente escrevendo mais um artigo sobre segurança com o foco voltado principalmente para o desenvolvimento em PHP e espero conscientizar-lhes que servidores "bem configurados" NÃO fazem por si sós o seu sistema seguro.

Não mostro ou descrevo nenhuma falha ou técnica nova de hacking, esse texto é uma compilação de alguns assuntos que visam mostrar que brechas pequenas de segurança podem comprometer tanto o seu sistema quanto o restante do servidor que lhe prove serviços.

Então se você se considera um especialista em segurança no desenvolvimento de sistemas, NÃO recomendo a leitura desse texto.

De uns tempos para cá comecei a notar que mais gente está programando e conseqüentemente mais gente está entrando no mercado de trabalho precocemente... Estão iniciando a sua viagem pelo maravilhoso mundo do desenvolvimento web como a inocente chapeuzinho vermelho levando a sua cestinha para sua vovozinha, no entanto não sabem eles - os desenvolvedores newbies ou chapeuzinhos vermelhos (Não existe aqui nenhum tipo de analogia com a distro Red Hat =D) negligentes - que o usuário lobo malicioso está de olho no seu sistema.

OBS: Entende-se como desenvolvedor negligente aquele que tem como objetivo somente fazer com que seu sistema esteja "rodando".

As técnicas abordam a inocência dos programadores e administradores que por sua vez não fazem as devidas validações ou restrições para o uso do PHP, ou seja, um bom exemplo seria um script PHP de upload mal configurado (ou mal implementado?) aliado a um sistema que não lhe nega permissão de escrita. Essa combinação se equivale a uma shell e, dois artigos muito interessantes para serem lidos a respeito disso podem ser encontrado em:
Nota: Ambos os assuntos serão discutidos no restante do texto.

    Próxima página

Páginas do artigo
   1. Início
   2. Descrição do ambiente
   3. Tratando dados
   4. O que são códigos arbitrários
   5. O que é SQL injection
   6. Escapando strings
   7. Coringas e meta caracteres
   8. Escapando argumentos em shell
   9. O que são casts
   10. Denial of Service em sua página
   11. Cross site script
   12. Explorando falhas locais
   13. Agradecimentos
Outros artigos deste autor

Usando cache na classe Fast Template

PHP 6.0 - Você está pronto?

Referências ou ponteiros em PHP

Adaptação das empresas de TI aos trabalhadores da era digital

O perigo no gerenciador de uploads do PHP

Leitura recomendada

Uma breve abordagem sobre Criptografia

ACCT - O contabilizador de processos do Linux

Entendendo um pouco sobre os daemons

Ferramenta Forense de Análise de Rede (NFAT) - Xplico

Como assinar digitalmente um documento criado no Br/OpenOffice

  
Comentários
[1] Comentário enviado por gustavo_marcon em 07/04/2004 - 19:19h

Cara, muito legal mesmo teu artigo, só achei que vc poderia ter dado uns toques de comandos que podem ser usados pra evitar por exemplo o SQL Injection, mas no mais, tá 10 mesmo. Parabéns.

[2] Comentário enviado por Ragen em 08/04/2004 - 00:31h

Olá Gustavo,

Note que logo abaixo de "O que é SQL injection" tem o que você quer "Escapando Strings", nessa parte é abordado como evitar os bendidos códigos maliciosos...

Só queria fazer mais um pequeno comentário:

Na parte onde eu falo sobre netcat eu fiz algumas pequenas mudanças desde a data de publicação do arquivo, por que eu deixo o assunto muito vago e sem nenhum exemplo concreto do seu uso....

Esse mesmo artigo pode ser encontrado em http://www.florecultura.com.br/bkp/artigo_tratamento.txt

[]`s

Ragen

[3] Comentário enviado por fabio em 11/04/2004 - 14:39h

Putz, acabou que com uma dica sua resolvi de forma trivial um problema que tinha no sistema de busca interno do site. Por exemplo, se você digitasse "sites celular" nada era encontrado. Daí mandei o sistema substituir espaços por %, agora buscas com palavras compostas funcionam. :)

Valeu pela dica!!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts