É possível saber qual linguagem de programação usa um site?


48

Por exemplo, stackexchange.comsem perguntar ao proprietário do site ou ao Google suas informações sobre o desenvolvimento do site, é possível saber qual idioma é usado no back-end?

Parece que o site não possui .extensionbarra, por exemplo, .phpque pode indicar o que é desenvolvido PHP, mas sem a extensão, como posso saber isso?


43
Deve-se notar que a extensão de um arquivo solicitado pela URL não precisa ser mapeada diretamente para um arquivo no sistema de arquivos. Pode-se facilmente mapear uma extensão como .phpum script CGI escrito em C ou um servlet escrito em Java.
Maple_shaft

11
O Wiki da Comunidade @Jeroen não deve ser usado como você propõe . Eu sei que era comumente abusado como tal no passado, mas vamos tentar esquecer isso ...
yannis

6
A rigor, é impossível. Quase todo idioma pode imitar completamente outro idioma - incluindo qualquer sinal de "contar uma história" que você esteja procurando.
emory

2
Da minha perspectiva ingênua, não consigo ver uma aplicação dessas informações. O que você faria com essa informação?
tehnyit

5
Além disso, encontrando sites vulneráveis ​​a explorações.
Erik Reppen

Respostas:


82

Existem indicadores. Alguns são mais fáceis de encontrar, outros são mais difíceis.

  • extensões de arquivo: .phpindica que o site está escrito em PHP, .aspindica ASP clássico, .aspxindica ASP.NET, .jspindica JSPs Java, ...
  • nomes de cookies: JSESSIONIDé um nome de cookie amplamente usado em servidores Java
  • headers: alguns sistemas adicionam cabeçalhos HTTP a suas respostas
  • conteúdo HTML específico:
    • padrões como muitos invólucros div com um esquema de nomeação de classe consistente, conforme usado por CMSes como Drupal.
    • comentários no HTML ou metatags na cabeça, indicando direta / indiretamente o uso da ferramenta
  • Mensagens de erro padrão ou design da página de erro (por exemplo, executando ping em um URL falso para ver seu 404)
  • Às vezes, tags de comentários são colocadas na página para fins de versão, que fornecem uma pista
  • ...

Mas tudo isso pode ser removido / alterado / falsificado. Alguns são mais fáceis de mudar do que outros, mas nenhum é 100% confiável.

Existem várias razões para alterar esses indicadores:

  • Você altera a tecnologia subjacente, mas não deseja alterar seus URLs
  • Você deseja fornecer o mínimo de informações possível sobre sua tecnologia
  • (relacionado ao anterior) Você prefere não ser a primeira parada para o barramento infantil de script quando vulnerabilidades conhecidas em toda a plataforma são descobertas / divulgadas
  • Você quer aparecer "dentro" (mesmo que isso signifique atualmente ter URLs no estilo REST sem extensão).
  • ...

11
O equivalente ao PHP JSESSIONIDé PHPSESSID.
precisa

6
Existem inúmeras ferramentas fazendo a análise, por exemplo, wappalyzer.com
user123444555621 4/12/12

11
Acabei de testar o wappalyzer em um site Django - a única coisa que detectou foi o JQuery e o Google Analytics. E site PHP com estrutura interna, onde não detectou nada.
vartec

Muito profundo para adicionar minha própria resposta. Eu também adicionaria padrões HTML (os CMSs, em particular, tendem a adicionar muitos invólucros de lixo com classes nomeadas consistentemente) e muitas ferramentas (principalmente ruins) que anunciam que foram usadas em metatags (também comentários, mas que foi mencionado).
Erik Reppen

11
@OP, eu definitivamente segmentaria os cookies de sessão como a primeira maneira de tentar resolver o que está sendo usado em um sistema automatizado. Isso é algo que as estruturas menos óbvias provavelmente mostrarão de maneira consistente, mas como dito, nada é 100% confiável.
Erik Reppen

8

Bem, existe o arquivo humans.txt que um desenvolvedor pode colocar no domínio que fornece algumas informações sobre o desenvolvimento do site, talvez quem trabalhou nele e quais padrões ou ferramentas foram usados. Se eles querem que você saiba sobre esse tipo de informação, eles podem / devem colocá-la lá. No entanto, assim como qualquer outra coisa, isso é opcional, portanto, não podemos garantir a informação. Confira humans.text


4

Não, pode ser difícil, se não impossível, se o webmaster não quiser divulgar. Existem algumas características de poucas estruturas, mas elas podem estar ocultas.

  • extensões de arquivo: não há motivo real para usar os padrões, e os MVCs mais modernos usam o roteamento de URL de qualquer maneira. Portanto, a menos que o site já exista há algum tempo, você provavelmente não verá nenhum (por exemplo, stackexchange não usa .aspxextensão);

  • IDs de sessão: por exemplo, PHPSESSIDé padrão para PHP, mas pode ser facilmente substituído ;

  • cabeçalhos com servidor da web e versões da linguagem de script: podem ser desativados ou até falsificados.

Coisas mais difíceis de esconder:

  • PHP lida com vários valores para mesma variável string de consulta anexando []ao nome, assim você veria algo como: ...?var[]=1&var[]=3&.... AFAIK, é a única estrutura da web que lida com isso dessa maneira.

Você está chamando o PHP de estrutura da web? É mais uma linguagem Turing-completo que pode ser usado em fazer mais do que web-stuff (embora geralmente não é usado como tal)
sakisk

@faif: em qualquer outro idioma, a análise da string de consulta faz parte do framework da web. Até Rasmus Lerdorf considera o PHP um framework web. Você conhece melhor que o autor?
vartec

Isso é o que ele tinha em mente inicialmente, mas acho que o PHP pode fazer hoje muito mais. Para ser correto, eu não chamaria o PHP de estrutura da web. Nesse caso, o que são CakePHP, codeigniter, etc.? Estruturas da Web da estrutura da Web? :)
sakisk

11
Eu não entendo o seu ponto. PHP é uma linguagem que possui a funcionalidade principal de uma estrutura da Web incorporada na própria linguagem. Lide com isso.
vartec

4

Resumindo: é possível ocultar qual idioma você está usando no back-end. Exemplo trivial: considere uma página "Hello World"; seria extremamente difícil descobrir qual estrutura / idioma estava sendo usado no back-end (assumindo que coisas básicas, como cookies de sessão, sejam configuradas manualmente ou não estejam em uso).

No entanto, o objetivo das estruturas é poupar a necessidade de reimplementar a funcionalidade e fazer com que você trabalhe de maneira padronizada. Quase todas as estruturas têm seus pequenos avisadores específicos que os revelam, se você parecer bem próximo. Como outros já apontaram, é possível tentar ocultá-los usando a configuração ou reimplementando vários recursos padrão. No entanto, eu diria que, para sites grandes, seria extremamente difícil ocultar tudo completamente e, mesmo se você conseguisse isso, usaria muito pouco de sua estrutura.

Em resumo, eu diria que quase sempre é possível ter uma idéia muito boa do que está sendo usado por baixo (com alguns exames e estímulos). Ocultar a estrutura usada é possível, mas rapidamente se torna inviável para sites grandes.

As respostas anteriores têm alguns bons exemplos de vários avisadores que estruturas e idiomas possuem. Gostaria de acrescentar que vários mecanismos de exibição têm um comportamento específico relacionado ao espaço em branco que pode ser usado para identificá-los. O mecanismo Razor usado no MVC3 + possui algumas peculiaridades bastante específicas que podem ser usadas para identificá-lo ou, pelo menos, restringir a lista de suspeitos (novamente, você pode dar um passo adiante, mas depois está usando?).


4

Não sei se isso responde especificamente à sua pergunta, mas há uma ferramenta que foi realmente útil para mim: Wappalyzer . É uma extensão do Firefox / Chrome que descobre as tecnologias usadas nos sites. Ele detecta sistemas de gerenciamento de conteúdo, servidores web, estruturas JavaScript, ferramentas de análise e muitos outros. Eu sei que não é exatamente o que você está procurando, mas fornece uma idéia muito próxima do uso de um site. Isto é o que mostra para programmers.stackexchange.com

Wappalyzer


Ha ha, visitei meu blog e ele diz Apache 2 / PHP 5.5.9, mas tenho certeza de que é o blog asp.net MVC do seu próprio rol, porque eu o fiz. Porque, por motivos de trolling, mudei o cabeçalho de resposta 'X-Powered-By: ASP.NET' para PHP.
Lars

1

É possível escrever um site de tal maneira que nenhuma pista sobre a tecnologia do servidor fique visível para o cliente.

No entanto, quando alguém usa algumas estruturas, como IceFaces para Java , é praticamente impossível fazer isso, porque você verá algo assim em seus pedidos:

ice.submit.partial=true&ice.session=c4f4jxT36tM_38848488&ice.view=3&ice.focus=&rand=0.322803445

Muitas outras estruturas têm seus selos característicos no corpo da página ou em solicitações / respostas. Encontre-os no google e você terá uma resposta.

No entanto, em cada idioma, se você optar por criar HTML a partir do zero (no mundo Java, um exemplo seria modelos de velocidade ) ou escolher o modo AJAX puro, em que o servidor retorna / aceita apenas mensagens JSON e o cliente é totalmente em JavaScript - da maneira mais difícil , até você causar uma exceção não corrigida que revela a tecnologia abaixo.


0

Em sites que usam estrutura completa ou CMS, às vezes você pode tentar consultar a página de administrador, será apresentada uma caixa de login e identificará de que estrutura ela veio, porque a maioria das pessoas não reskin o modelo de administrador. Por exemplo, se o seu site for example.com, tente ir para example.com/admin/ ou example.com/wp-admin/ (wordpress).



-5

Não, não é possível encontrar o idioma usado nos sites, visualizando o código fonte da página da web e pesquisando a existência de idiomas. por causa do uso de mais de um idioma para a criação do site, para fornecer alta segurança

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.