たとえばstackexchange.com
、サイト所有者やGoogleにウェブサイトの開発に関する情報を尋ねずに、バックエンドで使用されている言語を知ることは可能ですか?
ウェブサイトには.extension
バーがありません。たとえば.php
、で開発されていることを示すことができますPHP
が、拡張子がなければ、それをどのように知ることができますか?
たとえばstackexchange.com
、サイト所有者やGoogleにウェブサイトの開発に関する情報を尋ねずに、バックエンドで使用されている言語を知ることは可能ですか?
ウェブサイトには.extension
バーがありません。たとえば.php
、で開発されていることを示すことができますPHP
が、拡張子がなければ、それをどのように知ることができますか?
回答:
インジケータがあります。見つけやすいものもあれば、難しいものもあります。
.php
サイトがPHPで記述されている.asp
ことを示し、従来のASPを.aspx
示し、ASP.NETを.jsp
示し、Java JSPを示します...JSESSIONID
Javaサーバーで広く使用されているCookie名ですしかし、それらはすべて削除/変更/偽造することができます。他のものよりも変更しやすいものもありますが、100%信頼できるものはありません。
これらのインジケータを変更する理由はさまざまです。
JSESSIONID
はPHPSESSID
です。
まあ、humans.txtファイルがあります。これは、開発者がサイト開発に関する情報を提供するドメインに置くことができます。彼らがあなたにそれらの種類の情報についてあなたに知って欲しいなら、彼らはそこにそれを置くことができました/すべきです。ただし、他の何かと同様に、これはオプションであるため、ユーザーに通知することを保証できません。humans.textをチェックしてください
いいえ、ウェブマスターが開示を望まない場合、不可能ではないにしてもかなり困難です。いくつかのフレームワークにはいくつかの特徴がありますが、それらは非表示にすることができます。
ファイル拡張子:標準の拡張子を使用する本当の理由はなく、ほとんどの最新のMVCはとにかくURLルーティングを使用します。そのため、しばらくの間サイトが存在しない限り、おそらく何も表示されません(たとえば、stackexchangeは.aspx
拡張機能を使用しません)。
セッションID:たとえばPHPSESSID
、PHPのデフォルトですが、簡単にオーバーライドできます。
隠しにくいもの:
[]
、名前に追加することで同じクエリ文字列変数の複数の値を処理します...?var[]=1&var[]=3&...
。したがって、次のように表示されます 。私の知る限り、それはそのように処理する唯一のWebフレームワークです。つまり、バックエンドで使用している言語を隠すことができます。簡単な例:「Hello World」ページを考えてみましょう。バックエンドで使用されているフレームワーク/言語を把握することは非常に困難です(セッションCookieなどの基本的なものが手動で設定されているか使用されていないことを前提としています)。
ただし、フレームワークのポイントは、機能を再実装する手間を省き、標準化された方法で作業できるようにすることです。ほぼすべてのフレームワークには、十分によく見ると、それらを与える特定の小さなテルテールがあります。他の人が指摘したように、構成を使用するか、さまざまな標準機能を再実装することにより、これらを隠そうとすることができます。それでも、大規模なサイトでは、すべてを完全に隠すことは非常に難しく、たとえそれを達成したとしても、フレームワークはほとんど使用しないと主張します。
要約すると、下で何が使用されているかについての非常に良いアイデアを得ることは、ほとんど常に可能であると思います(いくつかの慎重な検査とプロディングで)。使用されるフレームワークを隠すことは可能ですが、大規模なサイトではすぐに実行不可能になります。
前の回答には、フレームワークと言語が持つさまざまな物語の良い例があります。さまざまなビューエンジンに、それらを識別するために使用できる特定の空白関連の動作があることを追加したいと思います。MVC3 +で使用されるRazorエンジンには、特定するために使用できるかなり具体的な癖があります。少なくとも、容疑者のリストを絞り込むことができます(繰り返しますが、それを回避できますが、それを使用していますか?)。
これが具体的にあなたの質問に答えるかどうかはわかりませんが、私にとって本当に役立つツールがあります:Wappalyzer。これは、Webサイトで使用されているテクノロジーを明らかにするFirefox / Chrome拡張機能です。コンテンツ管理システム、Webサーバー、JavaScriptフレームワーク、分析ツールなどを検出します。私はあなたが探しているものと正確に一致しているわけではないことを知っていますが、それはあなたがサイトが何を使用しているのかを非常によく知っています。これは、programmers.stackexchange.comに対して表示されるものです。
サーバーテクノロジーに関する手がかりがクライアントに見えないような方法でサイトを作成することは可能です。
ただし、誰かがIceFaces for Javaのようないくつかのフレームワークを使用する場合、リクエストにそのようなものが表示されるため、実行することは事実上不可能です。
ice.submit.partial=true&ice.session=c4f4jxT36tM_38848488&ice.view=3&ice.focus=&rand=0.322803445
他のフレームワークの多くは、ページ本文またはリクエスト/レスポンスに特徴的なスタンプを持っています。それらを見つけてグーグルで答えてください。
ただし、各言語で、HTMLをゼロから作成することを選択した場合(Javaの世界では例として速度テンプレート)、またはサーバーがJSONメッセージのみを返し、クライアントが完全にJavaScriptである純粋なAJAX方法を選択する場合-難しい方法、下の技術を明らかにする未捕捉の例外を引き起こすまで。
.php
Cで記述されたCGIスクリプトまたはJavaで記述されたサーブレットのような拡張機能を非常に簡単にマッピングできます。