我在http://www.codeforest.net/html5-image-upload-resize-and-crop中的代碼如下,在客戶端調整大小後,使用file_put_contents($file, $data);
保存。上傳base64_decode圖片通過文件把內容安全嗎?
if ($_POST) {
define('UPLOAD_DIR', 'uploads/');
$img = $_POST['image'];
$img = str_replace('data:image/jpeg;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = UPLOAD_DIR . uniqid() . '.jpg';
$success = file_put_contents($file, $data);
print $success ? $file : 'Unable to save the file.';
}
但是我唐諾這個功能實際上是如何工作的,正是我擔心的是 - 如果用戶改變了隱藏的輸入字段和僞造的PHP代碼看起來像圖像,或用戶不改變隱藏的輸入字段與另一個圖像大小不同,防止這種情況發生的最佳做法是什麼?
最佳實踐:不要使用表單域來處理不希望用戶篡改的數據。使用會話變量。 – Barmar
它是通過客戶端大小調整大小,如何使用會話數據? – Anonymous
我假設隱藏的字段是由另一個PHP腳本創建的。如果您必須獲取客戶端創建的數據,那麼您需要驗證它。將圖像寫入文件後使用'getimagesize'。 – Barmar