- PR -

CSVファイルのセキュリティについて

投稿者投稿内容
未記入
会議室デビュー日: 2009/01/20
投稿数: 6
投稿日時: 2009-01-20 17:50
早速ですが、CSVファイルのセキュリティについて質問したいと思います。

現在、Webアプリケーションを作成しているのですが、
CSVファイルを出力する場合、Response.WriteFileでCSVファイルを作成せずに
出力させています。

今回、帳票を出力するソフト?をASP.NET上で利用することになりました。
このソフトの処理の流れとしては、
サーバー上にある帳票ファイルとCSVファイルをクライアントのPCから、
サーバーのフォルダパスをJavaScriptで参照して、
クライアント上で帳票ファイルとCSVファイルを結びつけて出力するような形です。

このような処理をする場合、どうしてもCSVをファイルとしてサーバー上に
保存し、公開しなければなりません。

そうすると、他のログインしていないPCから直接URLで入力すれば、
CSVファイルが見れてしまいます。

また、このWebアプリの認証は単にログイン時にSessionを作成し、
画面遷移時やボタン押下時にSessionがあるかどうか確認することで、
認証(?とゆうか確認)しているシステムなので、(←この時点で問題がある)
Web.configでのフォルダに対しての認証設定ができません。
(用はフォーム認証でもWindows認証でもではない。)

現在の対応としては、ファイル名を日時などを入れて特定しにくいファイル名にしたり、
帳票出力後ファイルを削除したりしています。
この対応では一時的には直接URLを入力すれば見れてしまいます。

長々となりましたが、なにかいい方法はありませんか?


囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2009-01-20 17:57
httphandler に、csv をSystem.Web.HttpForbiddenHandler としてアクセス不可にするとか。
もっと簡単なのは、csv の拡張子を config などの元々アクセス不可のものに変更するとか。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2009-01-20 18:13
App_Dataフォルダ内に置く、でもいいような気がしますね。
武史
ベテラン
会議室デビュー日: 2007/09/21
投稿数: 71
投稿日時: 2009-01-20 18:57
多くの Web アプリでは、セッションID は、ばれない前提で
構築されているかと思いますので、
セッションID 名のフォルダなどに入れてしまうのでは
どうでしょうか?
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2009-01-20 23:33
Virtual directory に置かずに、Web application で読み込み client に write してやるのが鉄則ですね。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2009-01-20 23:51
認証式のWEBDAVにするとか。
そもそもアプリの作りに問題があるんでしょうけど。
未記入
会議室デビュー日: 2009/01/20
投稿数: 6
投稿日時: 2009-01-21 12:26
皆さんご返答ありがとうございます。

囚人さん、どっとねっとふぁんさん、ちゃっぴさんのご返答に対しては、
この帳票の出力システムは、クライアント側からCSVファイルを
アクセスしにいく仕組みになっている為、どうしてもCSVはアクセスできるように
なっていなければなりません。

武史さんのセッションID名のフォルダとは?
セッションを持っている人しかアクセスできないフォルダを作れるということですか?

引用:

かつのりさんの書き込み (2009-01-20 23:51) より:
認証式のWEBDAVにするとか。
そもそもアプリの作りに問題があるんでしょうけど。


まさしくそうなんです。

いろいろ考えたのですが、
やっぱりWebアプリの設定上ではCSVファイル或いはCSVがあるフォルダは、
公開にして、認証によりアクセスの可・不可の判断をしなければ
いけないと思います。

まとめると方法としては、
@ Form認証を使ってCSVファイルがあるフォルダに対して認証をかける
A 武史さんの方法
といったところでしょうか?
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2009-01-21 13:08
> CSVファイルを出力する場合、Response.WriteFileでCSVファイルを作成せずに
> 出力させています。

このままではいけないの?
JavaScriptからはたとえばashxファイルを指定して、その結果としてWriteFileでCSVファイルを返せばいいんじゃ?
ashxファイルのなかでセッションによる認証を確認すればいいんですよね。

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