(string) (handle_ticket_upload(['name' => $name, 'type' => '', 'tmp_name' => $tmp, 'error' => UPLOAD_ERR_OK, 'size' => 7])['error'] ?? ''); // Weiter als bis zum Verschieben kommt der Test nicht (move_uploaded_file geht nur bei echten Uploads): diese Meldung heißt „alle Prüfungen bestanden“ $passed = 'Die Datei konnte nicht gespeichert werden.'; foreach (['www.example.com.pdf', 'scan.js.2024.jpg', 'Bericht v1.2.final.pdf', 'foto.cmd.png', 'IMG_2024.07.01.JPG', 'notizen.xml.txt'] as $ok) { $check($try($ok) === $passed, 'harmloser Name wird akzeptiert: ' . $ok . ' → ' . $try($ok)); } foreach (['shell.php', 'start.exe', 'seite.html', 'bild.svg', 'x.php.exe', 'a.sh'] as $bad) { $check(str_contains($try($bad), 'aus Sicherheitsgründen nicht erlaubt'), 'gefährliche Endung bleibt gesperrt: ' . $bad); } $check(str_contains($try('shell.php'), 'shell.php'), 'die Meldung nennt die Datei'); $check(str_contains($try('.htaccess'), 'Dateiname'), '.htaccess bleibt gesperrt'); $check(str_contains($try('datei.dwg'), 'nicht erlaubt'), 'nicht freigegebene Endung bleibt abgelehnt'); @unlink($tmp); if ($failures) { fwrite(STDERR, "Fehlgeschlagen:\n - " . implode("\n - ", $failures) . "\n"); exit(1); } echo 'Upload name checks passed.' . "\n";