コード内から使用されているWebサーバーを判別する

ASP.NET WebアプリケーションがVisual StudioまたはIISのCassini Webサーバーで実行されているかどうかを実際に確認することは可能ですか?

尋ねる背景と理由:

多くのアプリケーションでは、マシン名を確認するか、クライアントIPがlocalhostかどうかを確認することで、ログインページの通常のログイン設定をバイパスします。 (127.0.0.1または::: 1)を使用して、開発PC上でデバッグしながらアプリケーションの動作をテストし、異なる方法で動作させることができます。

マシン名のアプローチはOKですが、新しいDev PCを入手する際にコードを変更する必要があります。私はこれがあまり頻繁ではないことを理解していますが、それはちょっと感じます。また、いくつかの開発者がそれに取り組んでいるので、すべてのマシンを "if"ステートメントにリストアップする必要があります。

"localhost"アプローチに関しては、私はそれを気に入らない。別の攻撃面を追加しているようだ。私は、誰かがWebサーバーの1つに乗って、ローカルで実行して、物事を見ることについて心配しています。

そこで、WebサイトがVisual StudioからCassini Webサーバーで実行されていることをコードから検出する方法があるのだろうかと思います。

2
ああ大変申し訳ありません。 HttpRequest.IsLocalを使用したくないと思いますどちらか?
追加された 著者 codingbadger,
それは異なっています。デバッグモードで実行されているかどうかを確認する方法を尋ねています。私はリリースモードでVisual Studioに簡単に入ることができます。
追加された 著者 David,
ありがとう、しかしこの質問のためではありません。 IPアドレスを調べるよりもきれいなコードですが、それでも同じ懸念があります。しかし、それは良い考えです。
追加された 著者 David,

2 答え

IISの下で実行する場合、 ServerVariables コレクションの SERVER_SOFTWARE プロパティは Microsoft-IIS/7.5 のようなものを報告します。

残念ながら、これはカッシーニの下で実行されているときは空白に見えます。

私はあなたがセキュリティを心配している場合は、これが反対の方法で望ましい動作に丸みを帯びているように、これがあなたを助けるかどうかわかりません。

コメントから:

System.Diagnostics.Process.GetCurrentProcess()。ProcessNameを確認します.Cassiniの場合は「WebDev.WebServer40」、IISの場合は「w3wp」です。

string processName= System.Diagnostics.Process.GetCurrentProcess().ProcessName;
if (processName == "WebDev.WebServer40")
{
  //testing
  //Insert code that you want to happen if this is running in Visual Studio
}

これがIISで実行されている場合、pName変数は "w3wp"になります。 Visual Studio .NET 4.0アプリケーションでは、 "WebDev.WebServer40"です。 (私はチェックしていませんが、ASP.NET 2.0の場合はWebDev.WebServer20と仮定しています)

2
追加された
それほど多くのセキュリティはありません。私たちは本当に機密情報のあるものにはこれを使用しません。これが最悪の場合、店長は地区指導者向けの情報を見ることになります。財務はなく、業績/人事はありません。これは、他のシステム(OpenIdに似ています)から渡されたuserIDを使用する内部サイト上にあり、特定のユーザーの下でWebサイトがどのように見えるかを見るために、バイパスします。これは実際には完璧です。やってみます。
追加された 著者 David,
ダン。うまくいきませんでした。私はIISがこれを放送しないように設定しているからだと思います。とにかくありがとう!
追加された 著者 David,
見つけた!あなたの答えは私を正しい道に導くのに十分に近いものでした。 System.Diagnostics.Process.GetCurrentProcess()。ProcessNameを確認しました。カッシーニの場合は「WebDev.WebServer40」、IISの場合は「w3wp」です。あなたのアンサーは私が探していたものではありませんでしたが、もしあなたがあなたのものを変更したいのであれば、私はそれを受け入れて、それを理解しようとする次の人がそれを見つけることができるようにします。
追加された 著者 David,
ええ、私は自分の質問に答えることが嫌いです。
追加された 著者 David,
乾杯ダビデ、ありがとう!
追加された 著者 starskythehutch,
@David答えが更新されない場合は、自分で答えて正しいものとしてマークしてください。私は、これが逃げ出した非常に素晴らしいコードであることを発見しました。
追加された 著者 rick schott,

ビルドシンボルを使用できませんか?ビルドシンボルを設定し、#PRODを実行して認証を実行します。したがって、デバッグモードに入ると、認証が完全にスキップされます。希望が助けてくれる!

0
追加された