[英]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_size
和upload_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.