ブログトップ 記事一覧 ログイン 無料ブログ開設

大人になったら肺呼吸 RSSフィード Twitter

2010-07-28

ファイルアップロード時にファイル名がフルパスで送信される件について

はじめに

ASP.NETでファイルアップロードのプログラムを作っていたのですが、とある問題に悩まされていました。

それは、アップロードのプログラムをローカルで動作させたときには、アップロードしたファイルのファイル名だけがサーバに送信されるのですが、サーバ機で動かしたとたんに、ファイル名がフルパスで送信されるようになるというものでした。

原因は、サーバ側のプログラムではなく、クライアント側のインターネットオプションのセキュリティ設定にありました。ローカルで動作させたときには、セキュリティゾーンがインターネットソーンだったのに対して、サーバ機で動作させたときには、セキュリティゾーンがイントラネットゾーンになっていました。

インターネットオプションのセキュリティ設定

IEにおいて、ファイルアップロード時に送信されるファイル名は、インターネットオプションのセキュリティ設定にある「サーバにファイルをアップロードするときにローカルディレクトリのパスを含める」の設定によって変わります。

「サーバにファイルをアップロードするときにローカルディレクトリのパスを含める」のデフォルト値は以下のようになっています。

  • インターネットゾーン:無効にする(IE8から)
  • イントラネットゾーン:有効にする

f:id:replication:20100728234914j:image

上記の設定が「有効にする」の場合は、フルパスが送信され、「無効にする」の場合にはファイル名のみが送信されます。

IE8からはインターネットゾーンのデフォルト値が「無効にする」になった

IE8からはセキュリティ上の理由から、インターネットゾーンにおける「サーバにファイルをアップロードするときにローカルディレクトリのパスを含める」のデフォルト値が「無効にする」になりました。

「サーバーにファイルをアップロードするときにローカル ディレクトリのパスを加える」の設定について、インターネット ゾーンの既定値を無効に変更しました。この変更により、インターネット上にローカルのファイル システムに関する潜在的に機密性のある情報が流出する危険を防止します。例えば、C:\users\ericlaw\documents\secret\image.png をアップロードする場合、Internet Explorer 8 はファイル名である image.png のみを送信します。

2008/7/2 - Internet Explorer 8 のセキュリティ : 総合的な保護 はてなブックマーク - 2008/7/2 - Internet Explorer 8 のセキュリティ : 総合的な保護

この仕様変更により、インターネットゾーンでファイルアップロードのアプリケーションをIE8で動かした場合には、ファイル名の部分しかサーバに送信されないようになります。


以下のエントリもあわせてどうぞ

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証