簡単なHTMLフォームがあります
<form id="uploadForm" method="post" action="/cgi-bin/test.cgi" enctype="multipart/form-data">
<input type="submit" name="add_something" value="add">
<input size="50" type="file" name="myFile" accept="application/zip">
</form>
さらに、ユーザーのブラウザーロケールを確認するか、自己設定された言語セッションCookieを検索することにより、サーバー側でWebページのローカリゼーションを行います。
でファイルをアップロードした場合
- 鉄18.0.1050.0
- Opera 11.64.1403
- Firefox 3.6.27
- Firefox 12.0
- Google Chrome 19.0.1084.52
- SeaMonkey 2.9.1
すべて正常に動作します。しかし、私がファイルをアップロードした場合
- IE 9.0.8112.16421
- マックストン3.3.8.3000
ローカリゼーションは失敗します。HTTPリクエスト内で問題を検出しました:
Opera 11
Content-Disposition: form-data; name="myFile"; filename="ziptest.zip"
Content-Type: application/zip
およびIE9
Content-Disposition: form-data; name="myFile"; filename="C:\Documents and Settings\m1krsch\Documents\Now Some Spaces\ziptest.zip"
Content-Type: application/x-zip-compressed
パスからスペースを削除すると、IEとMaxtonですべて正常に機能します。
プロジェクトの固定部分であるため、使用済みのcgiccライブラリを交換したり、スペースのないパスをユーザーに使用させたりすることはできません。この問題を回避するにはどうすればよいですか?IE / Maxtonに絶対ファイルパスの代わりにファイル名を使用させる方法はありますか?または、cgi / envに特定のパラメーターを設定して、絶対ファイルパスの送信を防ぐことはできますか?
[編集]これはIEとMaxtonのセキュリティの問題であることがわかりました。IEのセキュリティゾーンモデルでは、デフォルトで「ファイルのアップロード時にローカルディレクトリパスを含める」ことが許可されています。クライアント構成を変更することによってのみこの動作を禁止できますが、それでもアプリケーションベースのソリューションを探しています。[/編集]