簡體   English   中英

PHP-手動創建$ _FILES超全局數組

[英]PHP - **manually** creating the $_FILES superglobal array

這是在參考這個問題- 需要與通過php從遠程服務器下載的$ _FILES相同的東西

在以上文章中,OP基本上想要的是手動填充$_FILES超全局數組以上傳文件。

在答案中,您將看到使用tempnam創建一個臨時文件並通過使用file_get_contents在其中存儲資源的方式,我認為這在理論上應該是可行的(未經測試)。

現在,我的問題是,PHP是否沒有進行任何檢查以檢測和防止此行為,或者post-max-size / upload-max-filesize ini值如何影響此手動創建的$_FILES數組?

post_max_sizeupload_max_filesize對鏈接到的問題的方案都沒有影響,因為它們正在建立到遠程源的傳出連接以獲取數據。 這兩個ini設置僅會影響發送到您腳本(即傳入 )的POST數據。

PHP不會對$_FILES數組的更改進行任何檢查,您可以不受限制地自由修改數組。

$ _FILES只是由Web服務器創建的簡單數組。 您可以使用此數組執行您喜歡的任何操作。 tempnam創建一個文件,該文件由您控制。 因此,在這種情況下,“ post-max-size”和“ upload-max-filesize”確實很重要。 如果您用自己的代碼殺死服務器空間,那就是您的問題。 后最大大小可確保沒有其他人可以創建巨大的網絡流量。

對於單個文件,就是這樣:

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

$file = [
    'name' => 'image.jpg',
    'type' => 'image/jpeg',
    'tmp_name' => $path,
    'error' => 0,
    'size' => filesize($path),
];

您不能預填充$ _FILES數組,也不能將信息放入HTML中的type = file控件的名稱中。 這是一個安全問題。 考慮一下...如果我可以將信息放入要上傳的文件的名稱中,則可以在未經您許可或知情的情況下從您的計算機中刪除數據。 所有您需要做的就是您的瀏覽器訪問我的網站和“ Poof!”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM