È possibile sapere quale linguaggio di programmazione utilizza un sito Web?


48

Ad esempio, stackexchange.comsenza chiedere al proprietario del sito o a Google le proprie informazioni sullo sviluppo del sito Web, è possibile sapere quale lingua viene utilizzata nel back-end?

Sembra che il sito Web non abbia una .extensionbarra, ad esempio .phpche può indicare quale è stato sviluppato PHP, ma senza l'estensione, come posso saperlo?


43
Va notato che l'estensione di un file richiesto tramite URL non deve essere mappata direttamente a un file sul filesystem. Si può facilmente mappare un'estensione come .phpuno script CGI scritto in C o un servlet scritto in Java.
maple_shaft

1
@Jeroen Community Wiki non dovrebbe essere usato come proposto . So che è stato comunemente abusato come tale in passato, ma proviamo a dimenticarlo ...
yannis,

6
A rigor di termini è impossibile. La maggior parte di qualsiasi lingua può emulare completamente un'altra lingua, compresi eventuali segni di "racconto" che potresti cercare.
emory

2
Dal mio punto di vista ingenuo, non riesco a vedere un'applicazione di queste informazioni. Cosa faresti con queste informazioni?
tehnyit,

5
Inoltre, trova siti vulnerabili agli exploit.
Erik Reppen,

Risposte:


82

Ci sono degli indicatori. Alcuni sono più facili da trovare, altri sono più difficili.

  • estensioni di file: .phpindica che il sito è scritto in PHP, .aspindica ASP classico, .aspxindica ASP.NET, .jspindica JSP Java, ...
  • nomi di cookie: JSESSIONIDè un nome di cookie ampiamente utilizzato nei server Java
  • intestazioni: alcuni sistemi aggiungono intestazioni HTTP alle loro risposte
  • contenuto HTML specifico:
    • modelli come molti div-wrapper con uno schema di denominazione di classe coerente usato da CMS come Drupal.
    • commenti in HTML o meta tag nella testa che indicano direttamente / indirettamente l'utilizzo dello strumento
  • Messaggi di errore predefiniti o design della pagina di errore (ad es. Ping di un URL falso per vedere il loro 404)
  • A volte i tag di commento vengono inseriti nella pagina per scopi di controllo delle versioni che forniscono un indizio
  • ...

Ma tutti questi possono essere rimossi / modificati / falsificati. Alcuni sono più facili da cambiare rispetto ad altri, ma nessuno è affidabile al 100%.

Esistono vari motivi per modificare tali indicatori:

  • Modifichi la tecnologia sottostante ma non vuoi cambiare i tuoi URL
  • Desideri fornire il minor numero di informazioni possibile sulla tua tecnologia
  • (correlato al precedente) Preferiresti non essere la prima fermata per lo script kiddie bus quando vengono scoperte / pubblicizzate vulnerabilità note a livello di piattaforma
  • Vuoi sembrare "in" (anche se questo significa attualmente avere URL in stile REST senza estensione).
  • ...

11
L'equivalente in PHP JSESSIONIDè PHPSESSID.
yannis,

6
Esistono numerosi strumenti che eseguono l'analisi, ad esempio wappalyzer.com
user123444555621

1
Ho appena testato wappalyzer su un sito Django - l'unica cosa che ha rilevato è stata JQuery e Google Analytics. E sito PHP con framework interno, dove non ha rilevato nulla.
Vartec,

Troppo approfondito per aggiungere la mia risposta. Vorrei anche aggiungere modelli HTML (in particolare i CMS tendono ad aggiungere molti wrapper di immondizia con classi con nomi coerenti) e molti strumenti (per lo più scadenti) come annunciare che sono stati utilizzati nei meta tag (anche commenti, ma che è stato menzionato).
Erik Reppen,

1
@OP, sceglierei sicuramente i cookie di sessione come primo modo per provare a sistemare ciò che viene utilizzato in un sistema automatizzato. Questa è una cosa che i framework meno ovvi probabilmente mostreranno in modo coerente ma, come detto, nulla è affidabile al 100%.
Erik Reppen,

8

Bene, c'è il file humans.txt che uno sviluppatore può mettere sul dominio che fornisce alcune informazioni sullo sviluppo del sito, forse chi ci ha lavorato e quali standard o strumenti sono stati usati. Se vogliono che tu sappia di quel tipo di informazioni, potrebbero / dovrebbero metterle lì. Tuttavia, come qualsiasi altra cosa, questo è facoltativo, quindi non può garantire di informarti. Dai un'occhiata a human.text


4

No, potrebbe essere piuttosto difficile se non impossibile se il webmaster non vuole rivelarlo. Ci sono alcune caratteristiche di alcuni framework, ma possono essere nascosti.

  • estensioni di file: non esiste alcun motivo reale per utilizzarne di standard e la maggior parte dei MVC moderni utilizza comunque il routing URL. Quindi, a meno che il sito non sia in circolazione da un po 'di tempo, probabilmente non ne vedrai nessuno (es. Stackexchange non usa l' .aspxestensione);

  • ID sessione: ad esempio PHPSESSIDè predefinito per PHP, ma può essere facilmente ignorato ;

  • intestazioni con web server e versioni del linguaggio di scripting: possono essere disattivate o addirittura simulate.

Roba più difficile da nascondere:

  • PHP gestisce i valori multipli per stessa variabile stringa di query aggiungendo []al nome, quindi ci si vede qualcosa di simile: ...?var[]=1&var[]=3&.... AFAIK, è l'unico framework web che lo gestisce in questo modo.

Stai chiamando PHP un framework web? È più un linguaggio completo di Turing che può essere usato nel fare qualcosa di più del web-stuff (anche se di solito non è usato come tale)
sakisk

@faif: in qualsiasi altra lingua l'analisi della stringa di query fa parte del framework web. Perfino Rasmus Lerdorf considera PHP un framework web. Conosci meglio l'autore?
vartec,

Questo è quello che aveva in mente inizialmente, ma penso che PHP possa fare molto di più oggi. Per correttezza, non definirei PHP un framework web. In tal caso cosa sono CakePHP, codeigniter, ecc.? Framework Web del framework Web? :)
sakisk,

1
Non capisco il tuo punto. PHP è un linguaggio che ha le funzionalità di base di un framework Web incorporato nel linguaggio stesso. Affrontarla.
vartec,

4

In breve: è possibile nascondere la lingua utilizzata nel back-end. Esempio di prova: considera una pagina "Hello World"; sarebbe estremamente difficile capire quale framework / linguaggio fosse usato sul back-end (supponendo che le cose di base come i cookie di sessione siano impostate manualmente o non utilizzate).

Tuttavia, il punto dei framework è quello di risparmiarti di dover reimplementare le funzionalità e di farti lavorare in modo standardizzato. Quasi tutti i quadri hanno le loro piccole spie specifiche che li daranno via, se guardi abbastanza da vicino. Come altri hanno sottolineato, è possibile provare a nasconderli, utilizzando la configurazione o reimplementando varie funzionalità standard. Tuttavia, direi che per i siti di grandi dimensioni, sarebbe estremamente difficile nascondere completamente tutto e, anche se lo avessi realizzato, avresti usato pochissimo del tuo framework.

In sintesi, direi che è quasi sempre possibile avere un'ottima idea di ciò che viene utilizzato sotto (con un attento esame e pungoli). È possibile nascondere il framework utilizzato, ma diventa rapidamente impossibile per siti di grandi dimensioni.

Le risposte precedenti hanno alcuni buoni esempi di varie spie che hanno quadri e lingue. Vorrei aggiungere che vari motori di visualizzazione hanno comportamenti specifici relativi agli spazi bianchi che possono essere utilizzati per identificarli. Il motore Razor utilizzato in MVC3 + ha alcune stranezze abbastanza specifiche che potrebbero essere utilizzate per identificarlo, o almeno, restringere l'elenco dei sospetti (di nuovo, puoi farlo lateralmente, ma poi lo stai usando?).


4

Non so se questo risponda specificamente alla tua domanda, ma esiste uno strumento che mi è stato davvero utile: Wappalyzer . È un'estensione di Firefox / Chrome che scopre le tecnologie utilizzate sui siti Web. Rileva sistemi di gestione dei contenuti, server Web, framework JavaScript, strumenti di analisi e molti altri. So che non è esattamente quello che stai cercando, ma ti dà un'idea molto stretta di ciò che un sito utilizza. Questo è ciò che mostra per programmers.stackexchange.com

Wappalyzer


Ah ah, ho visitato il mio blog e dice Apache 2 / PHP 5.5.9, ma sono abbastanza sicuro che sia il tuo blog ASP.NET MVC roll-your-own, perché ce l'ho fatta. Perché per motivi di pesca alla traina ho cambiato l'intestazione della risposta "X-Powered-By: ASP.NET" in PHP.
Lars,

1

È possibile scrivere un sito in modo tale che al client non siano visibili indizi sulla tecnologia del server.

Tuttavia, quando qualcuno utilizza alcuni framework, come IceFaces per Java , è praticamente impossibile farlo perché vedrai qualcosa di simile nelle tue richieste:

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

Molti altri framework hanno i loro segni distintivi nel corpo della pagina o nelle richieste / risposte. Trovali, google e avrai una risposta.

Tuttavia, in ciascuna lingua, se si sceglie di creare HTML da zero (nel mondo Java un esempio potrebbe essere rappresentato dai modelli di velocità ) o si sceglie il modo AJAX puro, in cui il server restituisce / accetta solo messaggi JSON e il client è interamente in JavaScript - un modo difficile , fino a quando non si genera un'eccezione senza pari che rivela la tecnologia sotto.


0

Sui siti che utilizzano framework o CMS completi, a volte puoi provare a interrogare la pagina di amministrazione, ti verrà presentata una casella di accesso e identificherai da quale framework proviene perché la maggior parte delle persone non risponde al modello di amministrazione. Ad esempio, se il tuo sito è example.com, prova ad andare su example.com/admin/ o example.com/wp-admin/ (wordpress).



-5

No, non è possibile trovare la lingua utilizzata nei siti Web visualizzando il codice sorgente della pagina Web e cercando l'esistenza delle lingue. a causa dell'utilizzo di più di una lingua per la creazione di un sito Web per fornire un'elevata sicurezza

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.