3

これはこの質問に関連しています-phpを使用したリモートサーバーのダウンロードからの$_FILESと同じものが必要です

上記の投稿では、OPが基本的に望んでいるのは、ファイルをアップロードするためにスーパーグローバル配列に手動でデータを入力することです。$_FILES

答えでは、を使用tempnamして一時ファイルを作成し、を使用してその中にリソースを格納する方法がわかりますfile_get_contents。これは理論的には機能するはずです(テストされていません)。

さて、私の質問は、この動作を検出して防止するためのチェックがPHPにないか、またはpost-max-size/upload-max-filesize ini値がこの手動で作成された$_FILES配列にどのように影響するかということです。

4

4 に答える 4

4

およびは、データを取得するためにリモートソースへの発信接続を行っているため、リンクした質問のシナリオにはまったく影響しませんpost_max_size。2つのini設定は、スクリプトに送信されるデータ(つまり着信)にのみ影響します。upload_max_filesizePOST

PHPは配列への変更をチェックしません$_FILES。制限なしに、配列を自由に変更できます。

于 2012-12-17T14:16:47.743 に答える
1

$ _FILESは、Webサーバーによって作成された単純な配列です。この配列を使用すると、好きなことを行うことができます。tempnamは、ユーザーが制御できるファイルを作成します。そのため、この場合、「post-max-size」と「upload-max-filesize」が重要になります。あなたがあなた自身のコードでサーバースペースを殺すなら、それはあなたの問題です。post-max-sizeは、他の人が巨大なネットワークトラフィックを作成できないようにします。

于 2012-12-17T14:19:17.620 に答える
0

単一のファイルの場合、これは次のとおりです。

$path = '/path/to/my/image.jpg'

$file = [
    'name' => 'image.jpg',
    'type' => 'image/jpeg',
    'tmp_name' => $path,
    'error' => 0,
    'size' => filesize($path),
];
于 2019-04-02T14:20:10.143 に答える
-4

$ _FILES配列に事前入力することも、HTMLのtype=fileコントロールの名前に情報を入力することもできません。これはセキュリティの問題です。考えてみてください...アップロードしたいファイルの名前に情報を入れることができれば、あなたの知らないうちに許可なくコンピュータからデータを取り出すことができます。発生しなければならないのは、ブラウザが私のWebサイトにアクセスして「Poof!」にアクセスすることだけです。

于 2012-12-17T14:14:27.293 に答える