0

csv ファイルのアップロードが必要なアプリケーションがあります。

すべてが正常に機能しています。拡張子.csvのファイルを正常にアップロードしています。

ここに問題があります。拡張子を に変更してサーバーにアップロードすることで、誰かがexe.csvファイルをアップロードしようとする可能性があります。完璧にアップロードしています。を使用してファイルをアップロードするように提案された人もいましたmimetype私はこのチュートリアルに従います。

nullcsv ファイルのmimetype を取得しています。

csvファイルのみをアップロードする方法を教えてください。

前もって感謝します

4

3 に答える 3

1

私の知る限り、特に拡張子の変更など、あなたが述べた問題のために、誰かがファイルタイプをサーバーにアップロードするのを防ぐことはできません. 唯一の可能性は、ファイルを受け取った後、それを *.csv として解析することです。解析に成功した場合は、リポジトリに保存して成功メッセージを返します。そうでない場合は、ファイルを無視してエラー メッセージを返します。

明らかに、Javascript を使用して csv ファイルのクライアント側を解析できますが、常にファイル サーバー側を検証する必要があります。

Myme の種類は、サーバーに期待する種類を伝えるだけですが、誰かが csv 以外のファイルを送信するのを防ぐことはできません。

于 2012-12-12T10:13:25.423 に答える
1

さて、あなたは彼が正しい軌道に乗っています。ファイル拡張子を信頼するだけでなく、何らかのファイル検査を行う必要があります。

自分でプログラムするか、サードパーティのライブラリを使用する必要があります (これはあなたが行っていることです)。

サード パーティのフレームワークを使用する場合は、構成の問題が発生する必要があります。ライブラリがわからないので、あなたの説明からは何が問題なのかわかりません。

CSV ファイルの認識のみに関心がある場合は、少なくとも理解し、制御できる単純なものをお勧めします。このアプローチなど:

CSV ファイルが同じ数の要素 pr を持つ 0..n 行で構成されていると仮定します。次のいずれかの文字で区切られた行: , ;

EXE ファイルがこの構造を持つ可能性はほとんどありません。ただし、誰かが実装の知識を持って意図的にシステムを攻撃する場合を除きます。

最初の数行を読んでください。

それらを正規表現 ([,;]) で分割します。

結果の要素数が同じであることを確認します。

安全性を高めるために、同じ文字で分割されていることを確認してください。

于 2012-12-12T10:02:25.650 に答える