Como detectar acessos indevidos utilizando informações de User-Agent

Informações relevantes são encontradas no campo do header HTTP User-Agent. Veja suas utilidades e como detectar acessos indevidos.

O User-Agent é uma informação encontrada no cabeçalho de requisições HTTP e AJP. Ele serve para identificar qual é o software cliente (ex: navegador/browser) utilizado para acesso ao conteúdo Web, permitindo que a requisição seja adequada às necessidades específicas do cliente ou mesmo para bloqueio de acessos e Web crawlers. O conceito está definido na RFC 1945.

Sintaxe:

User-Agent: <product> / <product-version> <comment>

O valor do campo User-Agent contém tokens de identificação de nome e versão do produto, com comentários opcionais. Por exemplo:

  • Chrome 41.0.2228.0
  • Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36Firefox 40.1
  • Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1Safari 7.0.3
  • Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3
  • Safari/7046A194AGooglebot 2.1
  • Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

Como se pode observar nos exemplos acima, o valor contido no campo User-Agent é definido pelo desenvolvedor do software que origina a requisição e pode conter informações sobre compatibilidade com diversos componentes simultaneamente, inclusive Sistema Operacional e processador do cliente.

Como nem sempre é fácil interpretar o conteúdo do User-Agent, existem websites como o useragentstring.com que nos ajudam a interpretar esses dados com mais facilidade. Importante observar que existem diversos casos onde o campo User-Agent também é usado para atividades maliciosas e invasão de servidores (veja mais neste link).

Exemplos de análises possibilitadas pelo campo User-Agent:

  • Identificação de problemas de operação e interoperabilidade, haja vista que este campo permite que o servidor HTTP customize o conteúdo para os recursos de um dispositivo particular.
  • Estatísticas quanto a browsers/navegadores ou sistemas operacionais dos clientes, bem como padrões inesperados.
  • Identificação e mensuração de bots e web crawlers que estão acessando o conteúdo web.

O Zerum Valk provê visibilidade sobre os User-Agent de todas as requisições HTTP e AJP – facilitando sua análise – e alarmes em casos de anomalias.