- PR -

ファイルのチェック

投稿者投稿内容
indigo-x
大ベテラン
会議室デビュー日: 2008/02/21
投稿数: 207
お住まい・勤務地: 太陽の塔近く
投稿日時: 2008-03-01 10:48
シナリオ的にはいくつかありますが。

@ユーザーがかってにセキュリティーの設定を変更してしまって。
次の日からファイルが送信できなくなってしまう。
Aウィルス駆除ソフトので引っかかってしまう可能性がある
(すべて同じウィルス駆除であればまだましですが)
Bセキュリティレベルを下げているので、ウィルスが混入する可能性が大きくなります
C新しいPCがはいるたびに上記の問題が発生します。
などなど

HELPデスク等がしっかりサポートするのであればいいですが
、無いであれば技術者が毎回呼出される可能性があります

(設置が近くにあればまだ良いですが、毎回出張となれば。。。。)
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2008-03-01 14:41
引用:

ホーガンさんの書き込み (2008-03-01 09:32) より:

indigo-xさん
引用−−−−−−−−−−−−−−−−−−−−−−−−−
クライアント数が少ない場合はActiveXを作るのも問題ないと思いますが、
規模が大きい場合、運用でエライ事になるとおもいます(IEのセキュリティ設定で)
引用−−−−−−−−−−−−−−−−−−−−−−−−−

クライアント数は、70クライアントなのですが、
「規模が大きい場合、運用でエライ事になるとおもいます」というのは
 IEの設定でActiveXを使用可能にするという設定が、大変だという意味でしょうか。
 今回は、導入時にクライアントPCを新規に導入します。
 そのタイミングで、IEの設定(ActiveXを使用可)をするだけで
 ActiveXを使用した時でも問題ないのかなと思っています。
 ActiveXを使用した場合に、もっと違う懸念点があればご教示願えません
 でしょいうか。
 ActiveXは、スクリプトを埋め込んでクライアント側で動作させるので
 大抵の事は可能だが、その分セキュリティ上問題があるぐらいで
 理解しているのですが、甘いでしょうか。 



ActiveX を利用しても良いとは思いますが、下記のような欠点があるので注意が必要です。

  1. IE と同じ engine を利用していない Web browser で扱えない
  2. ActiveX を安全に利用するためには code signing digital ID が必須
  3. Windows Vista 以降では protected mode が有効なため、protected mode 環境下でも問題が無い方法を利用する必要がある


ということで、結構扱いが厄介です。

A に対応するためには、その Web browser に対応した別のものを利用する必要があります。

B に対応するためには、公的に承認されている CA から証明書を購入するか、private CA を独自構築して運用するといった対応が必要でしょう。
証明書をつけないのは論外として、証明書をつけても検証できない状態で警告が表示される状態も user の security 教育を考えると望ましい状態ではないので絶対に避けるべきです。

C に対応するためには ActiveX 内で OS の version 判定を行い処理を分岐させるような対応が必要でしょう。

ということで、対応するとなるとかなり費用が膨らむので client 側でやらなくてもよい仕様ならばやらないに越したことはないと思います。
_________________
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2008-03-01 15:25
ここから先は本題とは完全に横道にそれます。

引用:

くまっちさんの書き込み (2008-03-01 08:01) より:
質問者のファイルチェックうんぬんに関して言えば
1.ファイルがない場合
2.ファイルはあるが0バイトの場合
3.ファイルがあり1バイト以上の場合
というケースがありますよね。
そこでサーバー側だけで、0バイトかどうかで判断したら
1と2の区別が出来なくなるので、一概に存在確認は無駄だというのは
如何なものでしょう?と思ったわけです。ここは仕様次第ですよね。
存在有無だけなら、さほどコストは掛からないでしょう。数行程度で済むと思います。
ここにファイルのロックを組み込むとなれば、相当なコストだと思いますけど。



ActiveX で client 側の file を読み込んでから post するといった方法もあると思います。その場合、読み込み処理時点で file が存在するか否かがわかりますから確認処理は不要でしょう。

<INPUT type="file"〜> を生かした方法でやる場合には、確実性を求めるならばどちらにしろ server-side での確認が必須になりますので perforamnce tuning 以外の何ものでも無いかと。それを開発する費用に対し、効果が上回れば実施すればいいですし、上回らないのであればやらない。そんなところになるでしょう。

引用:

ファイル操作に関して言えば、ちゃっぴさんの言いたいことは理解できます。
(blog記事も読ませていただきました。)


ありがとうございます。

引用:

でもこれって「こうすべきである」(基本)というレベルではなく
「私ならこうします」(提案)というレベルですよね。


誤解の無いように書いておきますが、file 操作では事前に確認を行ったところで結局のところ結果が成功したか失敗したかで条件分岐することは必要になります。それを行わないのはそもそも論外なわけです。ここまではいいですよね?

で、その上で事前確認を行うとなると上記を base に新たな処理を追加するわけになるわけです。その上で下記について回答します。

引用:

私は出来る限り例外に頼らない(本当に例外的な場合を捕らえる)ようにコーディングをしたほうが
出来るだけ多くの人がコードを理解しやすいのではないかな?って思っているので。



必須とはされない処理を追加するわけですから、逆に複雑になっていませんか?

誤解している人が結構いると思うのであえて書きますが、例外 (exception) とはそもそも例外処理を間違いの少ないようにかつ効率的に実装することを目的として導入されたものです。

古の C では例外なんてものは無かったと聞いています。ではなぜ例外が導入されたのでしょう?

ちょっと下記を考えて見ましょう。

コード:
if (処理1)
{
   例外処理1
}
if (処理2)
{
   例外処理2
}



例外処理1、例外処理2 が共通の処理を実行すると仮定しましょう。
2箇所に分けて記述するのは面倒ですし、保守性からみても良くないですよね?
また、戻り値で返ってくるのは error code だけです。
それ以上の情報を得るためには Win32 API では GetLastError を利用する必要があります。さらに code が複雑になりますよね?

それを避けるために導入されたのが例外 object なわけです。

コード:
try
{
    処理1
    処理2
}
catch (例外)
{
    例外処理
}



簡潔に説明するため処理を 2つしか用意しませんでしたけど、大量にあったらどうなるでしょう?そこら辺を踏まえて再度例外について見直してはいかがでしょうか?

個人的には例外を避けるべきというのは performance tuning 以外に理由は見当たらないと思っています。その他の要因以上に performance tuning が要求される環境であれば例外を避けるべきという理由はもっともですが、現実的にはどうでしょう?

少なくとも例外を避ける方がわかりやすいというのは違っていると思います。
_________________
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2008-03-01 15:42
もう一つ書いておきます。

File 操作で事前に存在確認を行う欠点として下記があります。

  • 存在しているのに存在していないと返されることがある
  • 存在していないのに存在しているろ返されることがある


どちらもめったに発生しないことだとは思いますが、可能性としては存在しています。
Performance tuning (対して効果がないと思います) が絶対条件でもない限り、前述のこととこちらの欠点を加味して判断してみてください。

結果は明白だと思います。
_________________
indigo-x
大ベテラン
会議室デビュー日: 2008/02/21
投稿数: 207
お住まい・勤務地: 太陽の塔近く
投稿日時: 2008-03-03 08:54
未確認情報なのですが(確認する元気がありません)

ActiveXをインストールベースであれば多分(?)CA証明等の問題は無いかと
思います。(ひょっとしたら署名も不要では(?))

ただ、常にインストールが必要である事は避けられないですが。

未確認ばかりですいません。参考になればと思います。
ホーガン
常連さん
会議室デビュー日: 2008/02/18
投稿数: 42
投稿日時: 2008-03-03 13:34
indigo-xさん、ちゃっぴさん
ありがとうございます。
ActiveXを使用するにしても、色々な懸念があることが
理解できました。

本当にありがとうございました。

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