Welche Sicherheitsmaßnahmen sollten bei der Verwendung von PHP für Dateiuploads implementiert werden?

Bei der Verwendung von PHP für Dateiuploads ist es wichtig, Sicherheitsmaßnahmen zu implementieren, um potenzielle Sicherheitslücken zu schließen. Dazu gehören unter anderem die Überprüfung der Dateierweiterung, die Festlegung eines sicheren Speicherortes für die hochgeladenen Dateien, die Überprüfung auf Schadcode und die Begrenzung der Dateigröße.

// Check file extension
$allowed_extensions = array('jpg', 'jpeg', 'png', 'gif');
$uploaded_file_extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
if (!in_array($uploaded_file_extension, $allowed_extensions)) {
    die('Invalid file extension. Only JPG, JPEG, PNG and GIF files are allowed.');
}

// Set secure upload directory
$upload_dir = 'uploads/';
if (!file_exists($upload_dir)) {
    mkdir($upload_dir, 0777, true);
}

// Check for malware
if (is_uploaded_file($_FILES['file']['tmp_name'])) {
    $file_content = file_get_contents($_FILES['file']['tmp_name']);
    if (preg_match('/<\?php/i', $file_content)) {
        die('Malicious code detected in file.');
    }
}

// Limit file size
$max_file_size = 2 * 1024 * 1024; // 2MB
if ($_FILES['file']['size'] > $max_file_size) {
    die('File size exceeds limit. Maximum file size allowed is 2MB.');
}

// Move uploaded file to secure directory
$upload_file = $upload_dir . basename($_FILES['file']['name']);
if (move_uploaded_file($_FILES['file']['tmp_name'], $upload_file)) {
    echo 'File uploaded successfully.';
} else {
    echo 'Error uploading file.';
}