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

48

Por exemplo, stackexchange.com , sem solicitar 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 tem .extension bar, por exemplo .php que pode indicar o que é desenvolvido em PHP , mas sem a extensão, como posso saber disso?

    
por Ted Wong 04.06.2012 / 11:35
fonte

9 respostas

81

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

  • extensões de arquivo: .php indica que o site está escrito em PHP, .asp indica ASP clássico, .aspx indica ASP.NET, .jsp indica Java JSPs, ...
  • nomes de cookies: JSESSIONID é um nome de cookie amplamente usado em servidores Java
  • cabeçalhos: alguns sistemas adicionam cabeçalhos HTTP às suas respostas
  • conteúdo HTML específico:
    • padrões como lotes de div-wrappers com um esquema consistente de nomenclatura de classes, usado por CMSs como o Drupal.
    • comentários no HTML ou meta tags na cabeça direta / indiretamente indicando o uso da ferramenta
  • Mensagens de erro padrão ou design de página de erro (por exemplo, fazendo ping de uma URL falsa para ver o 404 deles)
  • Às vezes, as tags de comentário são colocadas na página para fins de versão, o que fornece uma pista
  • ...

Mas todos eles podem ser removidos / alterados / falsificados. Alguns são mais fáceis de mudar do que outros, mas nenhum é 100% confiável.

Existem vários motivos para alterar esses indicadores:

  • Você altera a tecnologia subjacente, mas não quer alterar seus URLs
  • Você deseja fornecer o mínimo possível de informações sobre sua tecnologia
  • (relacionado a anterior) Você preferiria não ser a primeira parada para o script kiddie bus quando as vulnerabilidades em toda a plataforma forem descobertas / divulgadas
  • Você quer parecer "in" (mesmo que, no momento, isso signifique ter URLs no estilo REST sem extensão).
  • ...
por 04.06.2012 / 11:39
fonte
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, quem trabalhou nele e quais padrões ou ferramentas foram usados. Se eles querem que você saiba sobre esses tipos de informação, eles poderiam / deveriam colocá-lo lá. No entanto, assim como qualquer outra coisa, isso é opcional, por isso também não é possível garantir a sua informação. Confira humans.text

    
por 07.06.2012 / 19:54
fonte
4

Não, pode ser difícil, se não impossível, se o webmaster não quiser divulgar. Existem algumas características de alguns frameworks, mas elas podem ser escondidas.

  • extensões de arquivo: não há nenhum motivo real para usar as extensões padrão, e a maioria dos MVCs modernos usa o roteamento de URL mesmo assim. Então, a menos que o site esteja disponível há algum tempo, você provavelmente não verá nenhum (por exemplo, o stackexchange não usa .aspx extension);

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

  • cabeçalhos com servidor da Web e versões de linguagem de script: podem ser desativado ou mesmo falsificado.

Coisas que são mais difíceis de esconder:

  • O PHP lida com vários valores para a mesma variável de string de consulta adicionando [] ao nome, assim você veria algo como: ...?var[]=1&var[]=3&... . AFAIK, é o único framework web que lida dessa maneira.
por 04.06.2012 / 15:25
fonte
4

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

No entanto, o objetivo dos frameworks é economizar a necessidade de reimplementar a funcionalidade e fazer com que você trabalhe de maneira padronizada. Quase todos os frameworks têm seus pequenos e específicos contadores que os revelam, se você olhar de perto o suficiente. Como outros salientaram, é 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 esconder completamente tudo, e mesmo se você conseguisse isso, estaria usando muito pouco do seu framework.

Em resumo, eu diria que é quase sempre possível ter uma boa idéia do que está sendo usado por baixo (com um exame cuidadoso e estimulação). Ocultar a estrutura usada é possível, mas rapidamente se torna inviável para grandes sites.

As respostas anteriores têm alguns bons exemplos de vários dizeres que os frameworks e as linguagens têm. Gostaria de acrescentar que vários mecanismos de visualização têm um comportamento específico relacionado a espaços em branco que pode ser usado para identificá-los. O mecanismo do Razor usado no MVC3 + tem algumas peculiaridades bastante específicas que poderiam ser usadas para identificá-lo, ou pelo menos, restringir a lista de suspeitos (novamente, você pode usá-lo de lado a lado, mas, então?) / p>     

por 05.06.2012 / 10:29
fonte
4

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

    
por 10.06.2012 / 05:07
fonte
1

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

No entanto, quando alguém usa algumas estruturas, como IceFaces para Java , é praticamente impossível fazer, porque você verá algo assim em suas solicitações:

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

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

No entanto, em cada idioma, se você escolher criar HTML do zero (no mundo Java, um exemplo seria velocity modelos) ou escolher puro AJAX, onde o servidor retorna / aceita somente mensagens JSON, e o cliente é totalmente em JavaScript - de maneira difícil, até que você cause uma exceção não corrigida que revele a tecnologia.

    
por 04.06.2012 / 15:35
fonte
0

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

    
por 11.06.2012 / 04:40
fonte
-2

Você deve conferir este site: Construído com . Ele permite que você saiba todas essas informações, se disponíveis.

    
por 05.12.2015 / 21:22
fonte
-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. devido ao uso de mais de um idioma para criação de site para fornecer alta segurança

    
por 14.04.2014 / 08:44
fonte