Para que serve o robots.txt ?

Fui conhecer o robots.txt quando precisei barrar os spiders(rôbos) dos buscadores de xeretarem em pastas aonde tinham páginas relacionadas a um sistema interno de um cliente, que está hospedado na web.

O que me levou a usar ele foi barrar e esconder informações como nome de diretório (o clássico seusite.com.br/admin) e páginas como login.html, login.php e essas coisas…

Porem até aonde eu li sobre o robots.txt ele tem que ser um arquivo público para que os rôbos consigam ler e seguir as regras inseridas no arquivo. Só que pensando um pouco mais… vi que isso já vai tirar um dos motivos de eu ter usado o robots.txt que era “esconder informações dos usuários como nomes de diretórios e páginas”.

Fiquei mais em dúvida ainda quando comecei a olhar o robots.txt de grandes sites…. vamos a alguns exemplos:

  • www.google.com/robots.txt – até ai de boa… qual o problema visualizar essas informações?
  • www.microsoft.com/robots.txt – um monte de aspx… eca.
  • http://en.wikipedia.org/robots.txt – esse foi o robots.txt mais completo e complexo de todos.. tem até umas mensagens para quem ta lendo o robots.txt, hahahaaha, do tipo:

    “Desculpe, wget, no seu modo recursivo é um problema freqüente.
    Por favor, leia as instruções pelo man para utilizá-lo corretamente; há uma
    opção –wait– que você pode usar para definir o atraso entre hits,
    por exemplo.”

  • g1.globo.com/robots.txt – Hmm.. tem um Java ali, um Servlets, um Jornalismo.. será um novo projeto? =D
  • E agora o mais bizarro, http://www.submarino.com.br/robots.txt , o robots.txt está simplesmente dando um “Disallow” no Dvd do Queen, hahahahahaha (vi isso em 31/07/08 )
    Update 07/10/2008 – e o Dvd do Queen continua la.

Eu não manjo desse lance de segurança e bla bla bla, só que fico me perguntando se essas informações podem ficar públicas por aí, esses exemplos que eu dei foi de uma pesquisa de 10min e são grandes sites, fico pensando nos mais humildes(fracos) que na maioria das vezes são alvos fáceis na mão de desocupados querendo virar hacker.

E aí, o que vocês acham?

Cuidado com o que você esquece no servidor…

Quem desenvolve sistemas para web sabe que o ambiente de produção nem sempre é aquela maravilha de organização, sempre fica uns arquivos para trás como teste.php, index_antiga.php, naosei.exemplo e etc.

Só que infelizmente o mundo não é tão azul assim e existem pessoas que adoram sacanear as coisas. E o mais fácil de achar são projetos com arquivos esquecidos como por exemplo o famoso connect.inc, con.inc, conectar.inc. Isso já mostra o quanto de sobrinhos(amadores) existem no mercado de sistemas para web, isso reflete a baixa profissionalização de programadores para web e a falta de visão das empresas que ainda pagam esses serviços com a filosofia do “bom e barato”.

Se tem uma coisa que todo programador web deveria saber é que O SEU SISTEMA VAI ESTAR NA INTERNET!!! isso parece óbvio para você? ótimo. Pois para uma grande parte de programadores web não.

Vamos fazer um teste? abre o google ai e busca por isso backup filetype:sql. Viram que maravilha?

Ok. não retornou tanto resultado assim, vamos perder mais 5min estudando a busca do google e vamos pesquisar por “bkp” ext:SQL

Ta ficando mais bonito o negocio num ta não? Agora pensa naquele moleque que não tem o que fazer… fica o dia inteiro na internet tentando achar algo para zuar e começa a pesquisar site por site atras desses lixos no servidor? Você programador sabe que muitos programas geram arquivos de backups dos arquivos que estão sendo construidos, por exemplo o Kwrite gera um nomedoarquivo.php~ do arquivo que você ta programando e muitas vezes você manda pro FTP sem nem saber.

Quer ver que legal? pesquisa isso “index” ext:php~

Fala aí… ta ficando divertido não tá? acho que mais meia hora estudando meios de buscar no google e tenho certeza que vou achar alguma senha de conexão a algum banco de dados.

Como eliminar isso? Conheço três soluções:

  1. Tomar vergonha na cara duas vezes ao dia. Uma no inicio do expediente e outra no final.
  2. Usar sempre um controle de versão(svn) e quando você for enviar algo para internet usar o comando svn export projeto projetolimpo que ai vai gerar uma pasta com apenas os arquivos do projeto que foram adicionados ao controle de versão do seu repositório.
  3. Colocar um arquivo robots.txt na raiz da sua aplicação bloqueando o acesso dos robos das buscas no seus diretórios. Você não sabe o que é o robots.txt? O google sabe.

Essa falha de segurança cometida por muitos programadores é apenas a ponta do iceberg.

Para que serve o PHPIDS?

Uma das coisas mais questionadas quando se fala em desenvolver uma aplicação de grande porte em PHP é a segurança. Pois é comum ouvir “o PHP é inseguro” e todo mundo que desenvolve profissionalmente para Web sabe muito bem que quem torna a aplicação vulnerável é na maioria das vezes o oreia seca que cobra mais barato.

E para provar isso mais uma ótima ferramenta está disponível para detectar a tentativa de entrada de código malicioso na sua aplicação Web. O nome dessa maravilha é PHPIDS.

Tá mais o que essa joça faz?

Com ela você pode implementar um script php que será executado automaticamente antes de qualquer requisição via GET no seu sistema e o script irá detectar tentativas de SQL INJECTION, PHP INJECTION, XSS e tudo que é tipo de injeção de código e ainda você poderá pegar o IP do infeliz que ta tentando zuar teu sistema.

É basicamente isso que o PHPIDS faz. Tem mais coisa como salvar isso numa base de dados, logs, a parada é interligada com o apache e tals.

Saiba mais sobre em:

Página oficial do PHPIDS: http://php-ids.org/
Instalando e configurando: http://rmb.homelinux.com/2008/06/25/detectando-intrusos-para-aplicacoes-php-com-o-phpids/
Quer testar antes de instalar?: http://demo.php-ids.org/