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