SlideShare uma empresa Scribd logo
Implementando Rotinas
                  de Geolocalização




CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 1 / 21
Quem?!

    Er Galvão Abbott trabalha há mais de 16 anos
desenvolvendo sistemas e aplicações com interface web.
Palestra em eventos, dá cursos em diversas instituições e
é o Diretor da PHP Conference Brasil, o principal evento de PHP
da América Latina.

    Especializou-se em segurança de aplicações web,
abordando o tema em uma época quando isso ainda era raro no
Brasil. Trabalhou com diversas empresas de grande parte, tanto
nacionais como internacionais.

    É o fundador e líder do GU PHPBR, Grupo de Usuários
de abrangência nacional, que hoje conta com mais de 1.200
usuários cadastrados.

Site: http://www.galvao.eti.br/
Twitter: @galvao
Slides e Documentos: http://slideshare.net/ergalvao




    CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 2 / 21
Objetivo



    Demonstrar conceitos e detalhes – tanto técnicos quanto não-técnicos – envolvidos
na implementação de rotinas de Geolocalização em aplicações web. Abordaremos os
seguintes tópicos:

→ Introdução
→ O projeto
→ ISOs envolvidas
→ Sobre IPv4 e IPv6
→ Falhas conceituais
→ Falhas inerentes




 CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 3 / 21
Introdução



     Existem três formas de se implementar uma rotina de Geolocalização em uma
aplicação:

→ Utilização de Posicionamento Global por Satélite (GPS)
→ Posicionamento do dispositivo conectado (Triangulação por torres de transmissão)
→ Análise de endereço IP (GeoIP)

    Embora as duas primeiras ofereçam uma grande vantagem na precisão, a terceira
se aplica a qualquer dispositivo, móvel ou não, e será o foco desta apresentação.




 CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 4 / 21
Introdução - Maxmind



     A Maxmind é uma empresa que fornece bases de dados de GeoIP. Foi escolhida
por possuir uma precisão razoável e por oferecer versões gratuitas de suas bases de
dados, além de uma API pronta em PHP e diversas outras linguagens.

Principais vantagens:

↑ Precisão de 99.8% (nível de país) e de 72% (nível de cidade no caso do Brasil)
↑ APIs prontas para C, C#, Java, Perl e PHP.
↑ Atualizado mensalmente
↑ Formato binário para uso com a API ou CSV para importação direta

Principais desvantagens:

↓ Suporte confuso para PHP (“port” para PHP5, fork “melhorado”)
↓ Compatibilidade limitada com IPv6
↓ Divisão de dados em dois arquivos CSV




 CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 5 / 21
O Projeto




CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 6 / 21
O Projeto




                                         X
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 7 / 21
O Projeto




CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 8 / 21
O Projeto




                                         X
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 9 / 21
Por que não pode ser simples?




  X Problemas de performance
  X Problemas em caso de imprecisão da base de dados
  X Não é renovável
  X Apenas uma fonte de pesquisa




CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 10 / 21
Objetivos




a   Performance, maior inteligência na localização
a   Precisão, mesmo sem automação total
a   Renovável, “correção automatizada”
a   Mais de uma fonte de pesquisa, maior precisão e confiabilidade




    CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 11 / 21
Conceitos do Projeto

                                               177.18.69.152



                              Classes            A              B              C              D

                               IP (v4)          177            18             69              152




→ IPs pertencentes a mesma Classe C são, normalmente, agrupados na mesma geolocalização
→ IPs/CCs geolocalizados incorretamente precisam de correção manual
→ IPs/CCs corrigidos manualmente são bloqueados (“locked”)
→ Todos os dados não bloqueados possuem um “TTL”
→ TTL é o tempo pelo qual um IP/CC não precisará ser verificado novamente




      CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 12 / 21
Conceitos do Projeto




CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 13 / 21
ISOs

→ ISO 3166-1 Alpha 2 – http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2

    Código único para cada país, contendo duas letras. É, com raras exceções, o mesmo
código utilizado nos ccTLDs (Country Code Top-Level Domains).

    Por ser único e ocupar pouco espaço pode ser indexado.

p. ex.: BR (Brasil), AR (Argentina), US (Estados Unidos), etc...

→ ISO 3166-2:XY, onde “XY” é um ISO 3166 Alpha2

    Código único para subdivisões de cada país (Estados, Territórios, Condados, etc...),
composto de duas letras para o país (sendo estas duas letras o ISO 3166-1 Alpha 2 do país),
um hífen e dois caracteres para a subdivisão em si.

    Tomando como exemplo o Brasil (http://en.wikipedia.org/wiki/ISO_3166-2:BR):

BR-SP (São Paulo), BR-RJ (Rio de Janeiro), etc...

    Não indexado em nosso projeto, por razões específicas.




      CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 14 / 21
IPv4 e IPv6

O que é importante levar em consideração:

→ Enquanto o IPv4 é representado por 4 grupos de 8 bits, ou octetos, como por exemplo:

    192.168.100.1

O IPv6 é representado por 8 grupos de 16 bits, ou grupos de valores hexadecimais:

    2001:0DB8:0000:0000:130F:0000:0000:140B

→ Não existe conversão de IPv4 para IPv6, o que existe é o que se chama de IPv4-mapeado.

Usando a notação de IPv4-mapeado, teríamos o endereço anterior representado como:

    ::FFFF:192.168.100.1 ou
    0:0:0:0:0:FFFF:192.168.100.1 ou ainda
    0000:0000:0000:0000:0000:FFFF:192.168.100.1




     CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 15 / 21
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 16 / 21
Falhas inerentes




CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 17 / 21
Falhas conceituais




  X Atualização de dados não prevista
  X Excesso de confiança na localização por Classe C
  X Investimento zero

  ? Exigir interação do cliente




CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 18 / 21
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 19 / 21
Conclusão



     Geolocalização é uma feature cada vez mais importante em um número crescente
de projetos. Embora seja possível implementar uma rotina razoável de geolocalização
com pouco ou nenhum custo, o projeto ideal passa por uma série de questões que
diferem bastante do apresentado aqui:

→ Investimento em serviços de qualidade para prover os dados
→ Utilização das três formas (GPS, Triangulação e GeoIP), havendo uma tomada de
decisão, dependendo do caso, para qual forma deve ser preferida.




 CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 20 / 21
Obrigado!




                              ? Dúvidas?
                             ↓ Críticas?
                             ↑ Elogios?!




CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 21 / 21

Mais conteúdo relacionado

PDF
Apresentacao frameworks
PDF
Unbreakeable php
PDF
PHP e Segurança - Uma união possível
PDF
ZF2 Menor, melhor e mais poderoso
PPTX
Desenvolvendo sistemas seguros com PHP
PDF
Implementando Segurança Em Sua Aplicação PHP
ODP
OWASP: O que, Por que e Como
PDF
Segurança PHP em 2016
Apresentacao frameworks
Unbreakeable php
PHP e Segurança - Uma união possível
ZF2 Menor, melhor e mais poderoso
Desenvolvendo sistemas seguros com PHP
Implementando Segurança Em Sua Aplicação PHP
OWASP: O que, Por que e Como
Segurança PHP em 2016

Semelhante a Implementando rotinas de geolocalização (20)

ODP
OSS, Comunidade, Eventos e como sua empresa ganha com isso
PDF
DRYing the Skeleton: Reducing code repetition in ZF2
ODP
Php7 esta chgando! O que você precisa saber
PDF
Desenvolvendo aplicações com ZF2
PDF
GraphQL - aposta ou retrocesso?
PDF
DBA BRASIL 1.0 - O Futuro do DBA em um universo as a Service.
PPT
Fsi8a Sistemas Internet
PPTX
Gestão de Ambientes Internet Webseriados
PPTX
Webseriados
PPT
Rails Summit 2008 - Web Operations - George Guimarães - Pagestacker
PDF
Site estático + Hospedagem Gratuita.pdf
PDF
PHP: Evolução
PPTX
Live DIO - CI / CD
PDF
Escalando uma plataforma poliglota - QConSP 17
PDF
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
PDF
Seminário de Desenvolvimento Mobile - Etec Cafelândia
PDF
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
PDF
Controle de versão com Git
PPTX
Visão Geral De Desenvolvimento Web Sre 2012
PDF
Meetup Arquitetura Big Data
OSS, Comunidade, Eventos e como sua empresa ganha com isso
DRYing the Skeleton: Reducing code repetition in ZF2
Php7 esta chgando! O que você precisa saber
Desenvolvendo aplicações com ZF2
GraphQL - aposta ou retrocesso?
DBA BRASIL 1.0 - O Futuro do DBA em um universo as a Service.
Fsi8a Sistemas Internet
Gestão de Ambientes Internet Webseriados
Webseriados
Rails Summit 2008 - Web Operations - George Guimarães - Pagestacker
Site estático + Hospedagem Gratuita.pdf
PHP: Evolução
Live DIO - CI / CD
Escalando uma plataforma poliglota - QConSP 17
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
Seminário de Desenvolvimento Mobile - Etec Cafelândia
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Controle de versão com Git
Visão Geral De Desenvolvimento Web Sre 2012
Meetup Arquitetura Big Data
Anúncio

Mais de Er Galvão Abbott (13)

PDF
Tudo o que você precisa saber sobre o php7
ODP
PHP e Open Source
PDF
ABRAPHP: Conquistas e Realizações - 2012-2014
ODP
Implementing security routines with zf2
ODP
Web: funcionamento, evolução e mercado
ODP
Otimizando a execução de código-fonte PHP
PDF
Além da autenticação: Permissões de acesso com Zend Framework
PDF
Proposta de Boas Práticas e Padrões de Desenvolvimento Web
PDF
PHPBR TestFest
PDF
Preto, Branco e as Sombras de Cinza
PDF
Top 10 OWASP com PHP
PDF
Aplicacoes Web Com AJAX
PDF
Prevenindo XSS: Execute apenas o SEU código
Tudo o que você precisa saber sobre o php7
PHP e Open Source
ABRAPHP: Conquistas e Realizações - 2012-2014
Implementing security routines with zf2
Web: funcionamento, evolução e mercado
Otimizando a execução de código-fonte PHP
Além da autenticação: Permissões de acesso com Zend Framework
Proposta de Boas Práticas e Padrões de Desenvolvimento Web
PHPBR TestFest
Preto, Branco e as Sombras de Cinza
Top 10 OWASP com PHP
Aplicacoes Web Com AJAX
Prevenindo XSS: Execute apenas o SEU código
Anúncio

Último (20)

PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PPTX
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
PPTX
Aula sobre desenvolvimento de aplicativos
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Aula 18 - Manipulacao De Arquivos python
PPTX
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Curso de Java 9 - (Threads) Multitarefas.pptx
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Apple Pippin Uma breve introdução. - David Glotz
PPTX
Aula sobre banco de dados com firebase db
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Processos na gestão de transportes, TM100 Col18
PPTX
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
Aula sobre desenvolvimento de aplicativos
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Aula 18 - Manipulacao De Arquivos python
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Curso de Java 9 - (Threads) Multitarefas.pptx
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
Custos e liquidação no SAP Transportation Management, TM130 Col18
Apple Pippin Uma breve introdução. - David Glotz
Aula sobre banco de dados com firebase db
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
COBITxITIL-Entenda as diferença em uso governança TI
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Processos na gestão de transportes, TM100 Col18
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...

Implementando rotinas de geolocalização

  • 1. Implementando Rotinas de Geolocalização CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 1 / 21
  • 2. Quem?! Er Galvão Abbott trabalha há mais de 16 anos desenvolvendo sistemas e aplicações com interface web. Palestra em eventos, dá cursos em diversas instituições e é o Diretor da PHP Conference Brasil, o principal evento de PHP da América Latina. Especializou-se em segurança de aplicações web, abordando o tema em uma época quando isso ainda era raro no Brasil. Trabalhou com diversas empresas de grande parte, tanto nacionais como internacionais. É o fundador e líder do GU PHPBR, Grupo de Usuários de abrangência nacional, que hoje conta com mais de 1.200 usuários cadastrados. Site: http://www.galvao.eti.br/ Twitter: @galvao Slides e Documentos: http://slideshare.net/ergalvao CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 2 / 21
  • 3. Objetivo Demonstrar conceitos e detalhes – tanto técnicos quanto não-técnicos – envolvidos na implementação de rotinas de Geolocalização em aplicações web. Abordaremos os seguintes tópicos: → Introdução → O projeto → ISOs envolvidas → Sobre IPv4 e IPv6 → Falhas conceituais → Falhas inerentes CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 3 / 21
  • 4. Introdução Existem três formas de se implementar uma rotina de Geolocalização em uma aplicação: → Utilização de Posicionamento Global por Satélite (GPS) → Posicionamento do dispositivo conectado (Triangulação por torres de transmissão) → Análise de endereço IP (GeoIP) Embora as duas primeiras ofereçam uma grande vantagem na precisão, a terceira se aplica a qualquer dispositivo, móvel ou não, e será o foco desta apresentação. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 4 / 21
  • 5. Introdução - Maxmind A Maxmind é uma empresa que fornece bases de dados de GeoIP. Foi escolhida por possuir uma precisão razoável e por oferecer versões gratuitas de suas bases de dados, além de uma API pronta em PHP e diversas outras linguagens. Principais vantagens: ↑ Precisão de 99.8% (nível de país) e de 72% (nível de cidade no caso do Brasil) ↑ APIs prontas para C, C#, Java, Perl e PHP. ↑ Atualizado mensalmente ↑ Formato binário para uso com a API ou CSV para importação direta Principais desvantagens: ↓ Suporte confuso para PHP (“port” para PHP5, fork “melhorado”) ↓ Compatibilidade limitada com IPv6 ↓ Divisão de dados em dois arquivos CSV CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 5 / 21
  • 6. O Projeto CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 6 / 21
  • 7. O Projeto X CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 7 / 21
  • 8. O Projeto CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 8 / 21
  • 9. O Projeto X CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 9 / 21
  • 10. Por que não pode ser simples? X Problemas de performance X Problemas em caso de imprecisão da base de dados X Não é renovável X Apenas uma fonte de pesquisa CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 10 / 21
  • 11. Objetivos a Performance, maior inteligência na localização a Precisão, mesmo sem automação total a Renovável, “correção automatizada” a Mais de uma fonte de pesquisa, maior precisão e confiabilidade CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 11 / 21
  • 12. Conceitos do Projeto 177.18.69.152 Classes A B C D IP (v4) 177 18 69 152 → IPs pertencentes a mesma Classe C são, normalmente, agrupados na mesma geolocalização → IPs/CCs geolocalizados incorretamente precisam de correção manual → IPs/CCs corrigidos manualmente são bloqueados (“locked”) → Todos os dados não bloqueados possuem um “TTL” → TTL é o tempo pelo qual um IP/CC não precisará ser verificado novamente CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 12 / 21
  • 13. Conceitos do Projeto CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 13 / 21
  • 14. ISOs → ISO 3166-1 Alpha 2 – http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 Código único para cada país, contendo duas letras. É, com raras exceções, o mesmo código utilizado nos ccTLDs (Country Code Top-Level Domains). Por ser único e ocupar pouco espaço pode ser indexado. p. ex.: BR (Brasil), AR (Argentina), US (Estados Unidos), etc... → ISO 3166-2:XY, onde “XY” é um ISO 3166 Alpha2 Código único para subdivisões de cada país (Estados, Territórios, Condados, etc...), composto de duas letras para o país (sendo estas duas letras o ISO 3166-1 Alpha 2 do país), um hífen e dois caracteres para a subdivisão em si. Tomando como exemplo o Brasil (http://en.wikipedia.org/wiki/ISO_3166-2:BR): BR-SP (São Paulo), BR-RJ (Rio de Janeiro), etc... Não indexado em nosso projeto, por razões específicas. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 14 / 21
  • 15. IPv4 e IPv6 O que é importante levar em consideração: → Enquanto o IPv4 é representado por 4 grupos de 8 bits, ou octetos, como por exemplo: 192.168.100.1 O IPv6 é representado por 8 grupos de 16 bits, ou grupos de valores hexadecimais: 2001:0DB8:0000:0000:130F:0000:0000:140B → Não existe conversão de IPv4 para IPv6, o que existe é o que se chama de IPv4-mapeado. Usando a notação de IPv4-mapeado, teríamos o endereço anterior representado como: ::FFFF:192.168.100.1 ou 0:0:0:0:0:FFFF:192.168.100.1 ou ainda 0000:0000:0000:0000:0000:FFFF:192.168.100.1 CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 15 / 21
  • 16. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 16 / 21
  • 17. Falhas inerentes CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 17 / 21
  • 18. Falhas conceituais X Atualização de dados não prevista X Excesso de confiança na localização por Classe C X Investimento zero ? Exigir interação do cliente CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 18 / 21
  • 19. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 19 / 21
  • 20. Conclusão Geolocalização é uma feature cada vez mais importante em um número crescente de projetos. Embora seja possível implementar uma rotina razoável de geolocalização com pouco ou nenhum custo, o projeto ideal passa por uma série de questões que diferem bastante do apresentado aqui: → Investimento em serviços de qualidade para prover os dados → Utilização das três formas (GPS, Triangulação e GeoIP), havendo uma tomada de decisão, dependendo do caso, para qual forma deve ser preferida. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 20 / 21
  • 21. Obrigado! ? Dúvidas? ↓ Críticas? ↑ Elogios?! CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 8/7/12 - 21 / 21