1

HTMLフォームからzipファイルとcsvファイルをアップロードしようとしています。

PHP で $_FILES (実際には symfony では $request->getFiles()) を出力すると、次のようになりました。

Array
(
    [zipfile] => Array
        (
            [name] => tempfiles.zip
            [type] => application/octet-stream
            [tmp_name] => C:\wamp\tmp\php5D42.tmp
            [error] => 0
            [size] => 850953
        )
    [csvfile] => Array
        (
            [name] => test.csv
            [type] => application/vnd.ms-excel
            [tmp_name] => C:\wamp\tmp\php5D52.tmp
            [error] => 0
            [size] => 312
        )
)

私はと疑問に思っていtypeますtmp_name。タイプに基づいていくつかの決定を下す必要があります。既存のタイプで決定を下すのは安全ですか? Linux サーバー上の同様のファイルに対して同じ結果が得られますか?

再び延長tmp_nameを行います。.tmpWindows/Linux の両方で一貫していますか? そうでない場合、Windows で記述したコード (を使用した決定type) が Linux で問題なく動作する方法はありますか?

4

2 に答える 2

3

これを使用typeすると、ユーザーがファイルの種類を変更したり、php スクリプトをアップロードしたりできるため、危険な場合があります。

画像ファイルを検証するには、 get_image_size()typeと同じように最初のものを検証する必要があります.zipファイルについてはわかりません

于 2012-09-25T09:47:34.103 に答える
2

typeフォームを信頼することは安全ではありません$_FILES。サーバー側でファイルタイプを検証する必要があります。

拡張機能について.tmpは、WindowsとLinuxの両方で問題ありません。

于 2012-09-25T09:42:57.530 に答える