Par exemple, stackexchange.com
, sans demander au propriétaire du site ou à Google leurs informations sur le développement du site, est-il possible de savoir quelle langue est utilisée dans le back-end?
Il semble que le site Web n'ait pas .extension
bar, par exemple .php
qui peut indiquer lequel est développé dans PHP
, mais sans l'extension, comment puis-je le savoir?
Il y a des indicateurs. Certains sont plus faciles à trouver, d'autres sont plus difficiles.
.php
indique que le site est écrit en PHP, .asp
indique un ASP classique, .aspx
indique ASP.NET, .jsp
indique Java JSP, ...JSESSIONID
est un nom de cookie largement utilisé dans les serveurs JavaMais tous ces éléments peuvent être supprimés/modifiés/truqués. Certains sont plus faciles à changer que d'autres, mais aucun n'est fiable à 100%.
Il existe plusieurs raisons de modifier ces indicateurs:
Eh bien, il y a le fichier humains.txt qu'un développeur peut mettre sur le domaine qui donne des informations sur le développement du site, peut-être qui y a travaillé et quelles normes ou outils ont été utilisés. S'ils veulent que vous sachiez ce genre d'informations, ils pourraient/devraient les mettre là. Cependant, comme toute autre chose, cela est facultatif, il ne peut donc pas non plus vous informer. Découvrez humains.text
En bref: il est possible de masquer la langue que vous utilisez sur le back-end. Exemple trivial: considérez une page "Hello World"; il serait extrêmement difficile de comprendre quel framework/langage était utilisé sur le back-end (en supposant que les éléments de base comme les cookies de session sont définis manuellement ou non utilisés).
Cependant, l'intérêt des frameworks est de vous éviter d'avoir à réimplémenter des fonctionnalités et de vous faire travailler de manière standardisée. Presque tous les frameworks ont leurs petits témoins spécifiques qui les dévoileront, si vous regardez assez près. Comme d'autres l'ont souligné, il est possible d'essayer de les masquer, en utilisant la configuration ou en réimplémentant diverses fonctionnalités standard. Néanmoins, je dirais que pour les grands sites, il serait extrêmement difficile de tout cacher complètement, et même si vous accomplissiez cela, vous utiliseriez très peu de votre cadre.
En résumé, je dirais qu'il est presque toujours possible d'avoir une très bonne idée de ce qui est utilisé en dessous (avec un examen attentif et une incitation). Cacher le cadre utilisé est possible, mais devient rapidement irréalisable pour les grands sites.
Les réponses précédentes contiennent de bons exemples de divers témoins dont disposent les frameworks et les langages. Je voudrais ajouter que divers moteurs de vue ont un comportement spécifique lié aux espaces blancs qui peut être utilisé pour les identifier. Le moteur Razor utilisé dans MVC3 + a des bizarreries assez spécifiques qui pourraient être utilisées pour l'identifier, ou du moins, réduire la liste des suspects (encore une fois, vous pouvez le contourner, mais alors, l'utilisez-vous?).
Je ne sais pas si cela répond spécifiquement à votre question mais il y a un outil qui m'a vraiment aidé: Wappalyzer . Il s'agit d'une extension Firefox/Chrome qui découvre les technologies utilisées sur les sites Web. Il détecte les systèmes de gestion de contenu, les serveurs Web, les frameworks JavaScript, les outils d'analyse et bien d'autres. Je sais que ce n'est pas exactement ce que vous recherchez, mais cela vous donne une idée très précise de l'utilisation d'un site. C'est ce que cela montre pour programmers.stackexchange.com
Non, cela pourrait être difficile voire impossible si le webmaster ne veut pas divulguer. Il existe certaines caractéristiques de quelques frameworks, mais elles peuvent être masquées.
extensions de fichier: il n'y a aucune raison réelle d'utiliser des extensions standard, et la plupart des MVC modernes utilisent de toute façon le routage d'URL. Donc, sauf si le site existe depuis un certain temps, vous n'en verrez probablement pas (par exemple, stackexchange n'utilise pas .aspx
extension);
iD de session: par exemple PHPSESSID
est par défaut pour PHP, mais peut être facilement remplacé ;
en-têtes avec serveur Web et versions de langage de script: peuvent être désactivés ou même truqués.
Des trucs plus difficiles à cacher:
[]
au nom, ainsi vous verriez quelque chose comme: ...?var[]=1&var[]=3&...
. AFAIK, c'est le seul framework web qui le gère de cette façon.Il est possible d'écrire un site de telle manière, qu'aucun indice sur la technologie du serveur ne soit visible pour le client.
Cependant, lorsque quelqu'un utilise certains frameworks, tels que IceFaces pour Java, il est pratiquement impossible de le faire car vous verrez quelque chose comme ça dans vos demandes:
ice.submit.partial=true&ice.session=c4f4jxT36tM_38848488&ice.view=3&ice.focus=&Rand=0.322803445
La plupart des autres cadres ont leurs cachets caractéristiques dans le corps de la page ou les demandes/réponses. Trouvez-les, google et vous aurez une réponse.
Cependant, dans chaque langue, si vous choisissez de créer du HTML à partir de zéro (dans Java monde, un exemple serait vélocité modèles) ou choisissez pur AJAX façon, où le serveur retourne/accepte uniquement les messages JSON, et le client est entièrement en JavaScript - un moyen difficile, jusqu'à ce que vous provoquiez une exception non capturée qui révèle la technologie sous.
Sur les sites qui utilisent un framework ou un CMS à part entière, vous pouvez parfois essayer d'interroger la page d'administration, vous verrez une boîte de connexion et identifier de quel framework il provient car la plupart des gens ne redéfinissent pas le modèle d'administration. Par exemple, si votre site est example.com, essayez d'accéder à example.com/admin/ ou example.com/wp-admin/ (wordpress).