- PR -

ノータッチデプロイメントにおける不明なアクセス抑止について

1
投稿者投稿内容
taro
会議室デビュー日: 2003/11/06
投稿数: 7
投稿日時: 2004-08-13 22:24
以下にある「ノータッチ・デプロイメントのサンプルへのリンク」をクリックすると
サンプルプログラムが起動されるのは分かるのですが、

http://www.atmarkit.co.jp/fdotnet/special/ntdeploy/ntdeploy_01.html

パケットモニターにて確認すると、不要なファイルを取得を試みているようです。

GET http://www.atmarkit.co.jp/fdotnet/special/ntdeploy/bin/ja-JP/mscorlib.resources.DLL HTTP/1.0

このGETに対するWebサーバーからのリターンは「HTTP/1.1 404 Not Found」
となっています。

再度、実行しても同様でした。
同じような環境をイントラネットにて構築して確認しても同じ結果なのですが、
今回、細い回線で運用するシステムを構築するにあたり、不要なパケットはなるべく
少なくしたいのですが、どのようにすれば解消出来るでしょうか?

宜しくお願いします。
masa
常連さん
会議室デビュー日: 2003/04/16
投稿数: 38
投稿日時: 2004-08-14 04:27
これに対する回答はMSDN Magazineの「NET Zero Deployment:Security and Versioning Models in the Windows Forms Engine Help You Create and Deploy Smart Clients 」に載っています

1.「●●.resources.DLL」がGET要求されないようにするには、AssemblyInfo.csやAssemblyInfo.vbに次のコードを追加してください。

// C#
using System.Resources;
[assembly: NeutralResourcesLanguageAttribute("ja-JP")]

' Visual Basic
Imports System.Resources
<Assembly: NeutralResourcesLanguageAttribute("ja-JP")>


2.「●●.exe.config」がGET要求されないようにするには、次のコードのみを記述したコンフィグ・ファイル(●●.exe.config)を用意してください。

<configuration></configuration>

※これによりいったんGACにキャッシュされると2回目以降はGET要求されません。


3.「●●.exe.DLL」がGET要求されないようにするには、sn.exeでキーファイルを生成して、AssemblyInfo.csやAssemblyInfo.vbで、次のコードのようにキーフィルを指定して厳密名を付けるとよいです。

[assembly: AssemblyKeyFile("..\\..\\mykey.snk")]

※sn.exeの使い方は、インサイド.NET Framework[改訂版]の「第2回アセンブリのアイデンティティ 」を参照してください。
taro
会議室デビュー日: 2003/11/06
投稿数: 7
投稿日時: 2004-08-14 14:46
回答有難う御座います。
回答頂いた内容で設定してみましたが、一部改善されません。


>> 1.「●●.resources.DLL」がGET要求されないようにするには、AssemblyInfo.csや
>> AssemblyInfo.vbに次のコードを追加してください。

  ブラウザ上でクリックした瞬間はGetされることは無くなりましたが、
  スマートクライアントが起動後、数分経過した後にGETされています。
  その間は特に何も操作をしていません。
  検証した「AssemblyInfo.vb」ファイルを添付します。



Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices
Imports System.Resources

' アセンブリに関する一般情報は以下の
' 属性セットを通して制御されます。アセンブリに関連付けられている情報を変更するには、
' これらの属性値を変更してください。

' アセンブリ属性の値を確認します。

<Assembly: AssemblyTitle("")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("")>
<Assembly: AssemblyCopyright("")>
<Assembly: AssemblyTrademark("")>
<Assembly: CLSCompliant(True)>

'以下の GUID は、このプロジェクトが COM に公開された場合、タイプ ライブラリの ID になります。
<Assembly: Guid("51C2813D-351C-4635-AFBE-44D7CD90A20A")>

' アセンブリのバージョン情報は、以下の 4 つの属性で構成されます :
'
' Major Version
' Minor Version
' Build Number
' Revision
'
' 下にあるように、'*' を使って、すべての値を指定するか、
' ビルドおよびリビジョン番号を既定値にすることができます。

<Assembly: System.Reflection.AssemblyVersion("1.0.0.0")>
<Assembly: System.Reflection.AssemblyCulture("")>
<Assembly: System.Reflection.AssemblyKeyName("Container")>
<Assembly: AssemblyKeyFile("c:\test.snk")>
<Assembly: NeutralResourcesLanguageAttribute("ja-JP")>


>> 2.「●●.exe.config」がGET要求されないようにするには、次のコードのみを記述した
>> コンフィグ・ファイル(●●.exe.config)を用意してください。

  2回目以降もGetされてしまいます。「test.exe.config」の内容は以下を一行で記述し、
  test.exeと同じディレクトリに置きました。

<configuration></configuration>

>> 3.「●●.exe.DLL」がGET要求されないようにするには......

 Getされないようになりました。

以上、宜しくお願いいたします。
masa
常連さん
会議室デビュー日: 2003/04/16
投稿数: 38
投稿日時: 2004-08-16 15:53
掲載していただいた「AssemblyInfo.vb」ファイルで、問題ないと思います。

> ブラウザ上でクリックした瞬間はGetされることは無くなりましたが、
> スマートクライアントが起動後、数分経過した後にGETされています。
> その間は特に何も操作をしていません。

そうですか。正直言うとこれ以上減らせるか分からないですが、
『.NET Magazine 2004年4月号』(翔泳社)の記事で、
「リクエストされるファイルのダミー・ファイルを用意することで大幅に減らせる」
とあります。これは、.Configファイルと同じ理屈だと思います。
これもやってみてはいかがでしょうか。

あと、海外のサイト(場所は見失いました)の掲示板で
サード・パーティのコンポーネントが要求するGET要求を減らすのに
Thread.CurrentThread.CurrentUICultureを初期化することで
解決しているのを見たことがあります。ご参考まで。


> 2回目以降もGetされてしまいます。

これに関しては当方(IISのローカル環境)ではGetされないので、理由は分かりません。
(たぶん違うと思いますが、ファイル名や大文字小文字なども確認してみてください)


私が分かるのはここまでです。
GET要求する部分はブラック・ボックスになっているので
どうやってGET要求が減らせるかは難しいですね。
完ぺきに減らすのは無理なのかもしれません。

以上、よろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)