Also ich habe dieses Skript zum Hochladen eines Bildes auf einen Server. Es ermöglicht jpg und png und benennt die Datei in eine zufällige 6-stellige Nummer um.Überprüfen Sie, ob ein Bild tatsächlich ein Bild ist. Php
<?php
if (isset($_FILES['file'])) {
$file = $_FILES['file'];
$file_name = $file['name'];
$file_tmp = $file['tmp_name'];
$file_size = $file['size'];
$file_error = $file['error'];
$file_ext = explode('.', $file_name);
$file_ext = strtolower(end($file_ext));
$allowed = array(
'jpg',
'png'
);
if (in_array($file_ext, $allowed)) {
if ($file_error === 0) {
if ($file_size <= 10000000) {
$file_name_new = mt_rand(100000, 999999) . '.' . $file_ext;
$file_destination = 'files/' . $file_name_new;
if (move_uploaded_file($file_tmp, $file_destination)) {
echo "<a href='$file_destination'>$file_name_new</a>";
}
}
}
}
}
?>
Alles funktioniert super. Es erlaubt nur Dateien mit der angegebenen Erweiterung .jpg und .png.
Wo ich auf Probleme stoßen, ist Sie in der Lage sind, eine txt-Datei wie script.txt-script.txt.jpg und der Server wird es umbenennen lassen, aber es ist nicht wirklich ein Bild. Dies bietet eine Angriffsanfälligkeit.
Gibt es etwas, das ich hinzufügen kann, dass tatsächlich überprüft wird, dass die hochgeladene Datei ein Bild ist? Ich habe etwas über getimagesize gehört, aber ich bin mir nicht sicher. Ich bin ziemlich neu in PHP.
Ja, 'getimagesize' für die übliche Praxis ist. –
Mögliches Duplikat von [Wie überprüfe ich, ob eine hochgeladene Datei ein Bild ohne MIME-Typ ist?] (Http://stackoverflow.com/questions/6484307/how-to-check-if-an-uploaded-file-is-an -image-ohne-mime-type) – MinhTri