Apakah mungkin untuk mengetahui bahasa pemrograman apa yang digunakan situs web?

48

Misalnya, stackexchange.comtanpa menanyakan kepada pemilik situs atau Google informasi mereka tentang pengembangan situs web, apakah ini mungkin untuk mengetahui bahasa apa yang digunakan di bagian belakang?

Tampaknya, situs web tidak memiliki .extensionbilah, misalnya .phpyang dapat menunjukkan di mana dikembangkan PHP, tetapi tanpa ekstensi, bagaimana saya bisa tahu itu?

Ted Wong
sumber
43
Perlu dicatat bahwa ekstensi file yang diminta oleh URL tidak perlu dipetakan langsung ke file di sistem file. Seseorang dapat dengan mudah memetakan ekstensi seperti .phpke CGI-Script yang ditulis dalam C atau Servlet yang ditulis dalam Java.
maple_shaft
1
@Jeroen Community Wiki tidak seharusnya digunakan saat Anda melamar . Saya tahu ini sering disalahgunakan di masa lalu, tapi mari kita lupakan itu ...
yannis
6
Sebenarnya tidak mungkin. Sebagian besar bahasa apa pun dapat sepenuhnya meniru bahasa lain - termasuk tanda "ceritakan" yang mungkin Anda cari.
emory
2
Dari sudut pandang naif saya, saya tidak dapat melihat aplikasi informasi ini. Apa yang akan Anda lakukan dengan informasi ini?
tehnyit
5
Juga, menemukan situs yang rentan terhadap eksploitasi.
Erik Reppen

Jawaban:

82

Ada beberapa indikator. Beberapa lebih mudah ditemukan, yang lain lebih sulit.

  • ekstensi file: .phpmenunjukkan bahwa situs ini ditulis dalam PHP, .aspmenunjukkan ASP klasik, .aspxmenunjukkan ASP.NET, .jspmenunjukkan Java JSP, ...
  • nama cookie: JSESSIONIDadalah nama cookie yang banyak digunakan di server Java
  • header: beberapa sistem menambahkan header HTTP ke respons mereka
  • konten HTML spesifik:
    • pola seperti banyak pembungkus div dengan skema penamaan kelas yang konsisten seperti yang digunakan oleh CMS seperti Drupal.
    • komentar dalam HTML atau meta tag di kepala secara langsung / tidak langsung menunjukkan penggunaan alat
  • Pesan kesalahan default atau desain halaman kesalahan (misalnya ping URL palsu untuk melihat 404 mereka)
  • Terkadang tag komentar ditempatkan di halaman untuk keperluan versi yang memberikan petunjuk
  • ...

Tetapi semua itu bisa dihapus / diubah / dipalsukan. Beberapa lebih mudah diubah daripada yang lain, tetapi tidak ada yang 100% dapat diandalkan.

Ada berbagai alasan untuk mengubah indikator-indikator tersebut:

  • Anda mengubah teknologi yang mendasarinya tetapi tidak ingin mengubah URL Anda
  • Anda ingin memberikan informasi sesedikit mungkin tentang teknologi Anda
  • (Terkait dengan sebelumnya) Anda lebih suka tidak menjadi pemberhentian pertama untuk skrip kiddie bus saat diketahui kerentanan platform-lebar ditemukan / dipublikasikan
  • Anda ingin tampak "dalam" (meskipun 'saat ini berarti memiliki URL gaya-kurang REST-ekstensi).
  • ...
Joachim Sauer
sumber
11
Setara dengan PHP JSESSIONIDadalah PHPSESSID.
yannis
6
Ada banyak alat di luar sana yang melakukan analisis, misalnya wappalyzer.com
user123444555621
1
Baru saja menguji wappalyzer di situs Django - satu-satunya yang terdeteksi adalah JQuery dan Google Analytics. Dan situs PHP dengan kerangka kerja in-house, di mana ia mendeteksi apa-apa.
vartec
Terlalu teliti untuk menambahkan jawaban saya sendiri. Saya juga akan menambahkan pola HTML (CMS khususnya cenderung menambahkan banyak pembungkus sampah dengan kelas yang disebutkan secara konsisten) dan banyak alat (kebanyakan jelek) ingin mengumumkan bahwa mereka telah digunakan dalam meta tag (juga komentar, tetapi itu disebutkan).
Erik Reppen
1
@OP, saya pasti akan menargetkan cookie sesi sebagai cara pertama untuk mencoba dan memilah apa yang digunakan dalam sistem otomatis. Itu satu hal kerangka kerja yang kurang jelas cenderung konsisten menunjukkan tetapi seperti yang dikatakan, tidak ada yang 100% dapat diandalkan.
Erik Reppen
8

Nah, ada file human.txt yang dapat dipasang oleh pengembang di domain yang memberikan beberapa informasi tentang pengembangan situs, mungkin siapa yang mengerjakannya dan standar atau alat apa yang digunakan. Jika mereka ingin Anda tahu tentang jenis-jenis informasi itu, mereka bisa / harus meletakkannya di sana. Namun, sama seperti hal lainnya, ini opsional sehingga tidak dapat menjamin untuk memberi tahu Anda juga. Lihat manusia. Teks

Dandre Allison
sumber
4

Tidak, ini bisa lebih sulit jika bukan tidak mungkin jika webmaster tidak ingin mengungkapkannya. Ada beberapa karakteristik dari beberapa kerangka kerja, tetapi mereka dapat disembunyikan.

  • ekstensi file: tidak ada alasan nyata untuk menggunakan yang standar, dan sebagian besar MVC modern menggunakan perutean URL. Jadi kecuali situs telah ada selama beberapa waktu, Anda mungkin tidak akan melihat (mis. Stackexchange tidak menggunakan .aspxekstensi);

  • ID sesi: misalnya PHPSESSIDdefault untuk PHP, tetapi dapat dengan mudah diganti ;

  • header dengan server web dan versi bahasa skrip: dapat dimatikan atau bahkan dipalsukan.

Hal-hal yang lebih sulit disembunyikan:

  • PHP menangani beberapa nilai untuk variabel string query yang sama dengan menambahkan []nama, sehingga Anda akan melihat sesuatu seperti: ...?var[]=1&var[]=3&.... AFAIK, itu satu-satunya kerangka kerja web yang menanganinya seperti itu.
vartec
sumber
Apakah Anda menyebut PHP kerangka kerja web? Ini lebih merupakan bahasa lengkap Turing yang dapat digunakan dalam melakukan lebih dari hal-hal web (meskipun biasanya tidak digunakan seperti itu)
sakisk
@faif: dalam string kueri parsing bahasa lain adalah bagian dari kerangka kerja web. Bahkan Rasmus Lerdorf menganggap PHP sebagai kerangka kerja web. Anda tahu lebih baik dari penulis?
vartec
Itulah yang ada dalam pikirannya pada awalnya, tetapi saya pikir PHP dapat melakukan lebih banyak hari ini. Untuk kebenarannya, saya tidak akan menyebut PHP kerangka kerja web. Dalam hal apa itu CakePHP, pemberi kode, dll.? Kerangka kerja web kerangka kerja web? :)
sakisk
1
Saya tidak mengerti maksud Anda. PHP adalah bahasa yang memiliki fungsionalitas inti dari kerangka kerja web yang tertanam dalam bahasa itu sendiri. Menghadapinya.
vartec
4

Singkatnya: Dimungkinkan untuk menyembunyikan bahasa apa yang Anda gunakan di back-end. Contoh sepele: pertimbangkan halaman "Hello World"; akan sangat sulit untuk mengetahui kerangka / bahasa apa yang digunakan di back-end (dengan asumsi hal-hal dasar seperti cookie sesi diatur secara manual atau tidak digunakan).

Namun, inti dari kerangka kerja ini adalah untuk menyelamatkan Anda harus menerapkan kembali fungsionalitas, dan membuat Anda bekerja dengan cara standar. Hampir semua kerangka kerja memiliki cerita kecil spesifik yang akan memberikannya, jika Anda melihat cukup dekat. Seperti yang telah ditunjukkan oleh orang lain, adalah mungkin untuk mencoba menyembunyikan ini, dengan menggunakan konfigurasi atau menerapkan kembali berbagai fitur standar. Namun demikian, saya berpendapat bahwa untuk situs besar, akan sangat sulit untuk sepenuhnya menyembunyikan semuanya, dan bahkan jika Anda mencapai itu, Anda akan menggunakan sangat sedikit kerangka kerja Anda.

Singkatnya, menurut saya hampir selalu mungkin untuk mendapatkan ide yang sangat bagus tentang apa yang digunakan di bawahnya (dengan beberapa pemeriksaan dan dorongan hati-hati). Menyembunyikan kerangka kerja yang digunakan adalah mungkin, tetapi dengan cepat menjadi tidak layak untuk situs besar.

Jawaban sebelumnya memiliki beberapa contoh bagus dari berbagai cerita yang dimiliki kerangka kerja dan bahasa. Saya ingin menambahkan bahwa berbagai mesin pencari memiliki perilaku spesifik yang berhubungan dengan ruang putih yang dapat digunakan untuk mengidentifikasi mereka. Mesin Razor yang digunakan dalam MVC3 + memiliki beberapa keanehan yang cukup spesifik yang dapat digunakan untuk mengidentifikasinya, atau setidaknya, mempersempit daftar tersangka (sekali lagi, Anda dapat meminggirkannya, tetapi kemudian, apakah Anda menggunakannya?).

Daniel B
sumber
4

Saya tidak tahu apakah ini secara khusus menjawab pertanyaan Anda tetapi ada alat yang sangat membantu saya: Wappalyzer . Ini adalah ekstensi Firefox / Chrome yang mengungkap teknologi yang digunakan di situs web. Ini mendeteksi sistem manajemen konten, server web, kerangka kerja JavaScript, alat analisis dan banyak lainnya. Saya tahu tidak persis apa yang Anda cari tetapi itu memberi Anda ide yang sangat dekat tentang apa yang digunakan situs. Ini yang ditunjukkan oleh programmers.stackexchange.com

Wappalyzer

Ither
sumber
Ha ha, saya mengunjungi blog saya dan mengatakan Apache 2 / PHP 5.5.9, tapi saya cukup yakin itu roll-blog ASP.NET MVC Anda sendiri, karena saya membuatnya. Karena untuk alasan troll, saya telah mengubah header respons 'X-Powered-By: ASP.NET' ke PHP.
Lars
1

Dimungkinkan untuk menulis situs sedemikian rupa, sehingga tidak ada petunjuk tentang teknologi server yang akan terlihat oleh klien.

Namun, ketika seseorang menggunakan beberapa kerangka kerja, seperti IceFaces untuk Java , praktis tidak mungkin dilakukan karena Anda akan melihat sesuatu seperti itu dalam permintaan Anda:

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

Banyak kerangka kerja lain memiliki perangko karakteristiknya baik di badan laman atau permintaan / tanggapan. Temukan mereka, google dan Anda akan memiliki jawabannya.

Namun, dalam setiap bahasa, jika Anda memilih untuk membuat HTML dari awal (di dunia Java contohnya adalah templat kecepatan ) atau pilih cara AJAX murni, di mana server mengembalikan / menerima hanya pesan JSON, dan klien sepenuhnya menggunakan JavaScript - cara yang sulit , sampai Anda menyebabkan pengecualian yang belum ditonton yang mengungkapkan teknologi di bawah.

Pelaut Danubia
sumber
0

Di situs yang menggunakan kerangka kerja lengkap atau CMS, kadang-kadang Anda dapat mencoba menanyakan halaman admin, Anda akan disajikan dengan kotak login dan mengidentifikasi dari mana kerangka itu berasal karena kebanyakan orang tidak memeriksa kembali templat admin. Misalnya jika situs Anda adalah example.com, coba buka example.com/admin/ atau example.com/wp-admin/ (wordpress).

Lie Ryan
sumber
-5

Tidak, tidak mungkin menemukan bahasa yang digunakan di situs web dengan melihat kode sumber halaman web dan mencari keberadaan bahasa. karena penggunaan lebih dari satu bahasa untuk pembuatan situs web untuk memberikan keamanan tinggi

chehu
sumber