[PHP allgemein] Zusatzbedingung in Script integrieren Remote
Verfasst: 18.03.2013 17:49
Hi PHP-Pros,
in folgendes kleines Remote-Script soll eine Abfrage eingebaut werden, damit nur gif, jpg und png Dateien damit verlagert werden können.
Funktioniert soweit auch, enthält aber eine böse Sicherheitslücke. Das Script prüft leider nicht, ob es sich um eine Bild-Datei handelt.
Momentan wird damit ganz stupide jede Datei auf den Server remotet.
Gerne würde ich vor dem Speichern auf meinem Server sicherstellen, dass nur gif, jpg und png verschoben werden und bei sonstigen Datein eine Fehlermeldung erscheint.
Das Formular sendet die Daten per method="post" an sich selbst. Möglich wäre auch ein zweites PHP, dass die Daten empfängt und prüft.
Vielleicht könnte folgende Funktion eingebaut werden:
Wie kann ich nun vor dem Verschieben prüfen, ob es sich bei der Datei aus der Remote-URL um ein Bild handelt?
LG
PS: Später soll das Ganze dann auf einem Freehoster laufen und in einen bbCode eingebaut werden, um Remote-Uploads für Bilder zu ermöglichen.
in folgendes kleines Remote-Script soll eine Abfrage eingebaut werden, damit nur gif, jpg und png Dateien damit verlagert werden können.
Code: Alles auswählen
<?php
$upload_folder = "./upload/";
if (isset ($_POST["remote_url"]) )
{
$read = fopen ($_POST["remote_url"], "rb");
$image_contents = null;
if ($read)
{
while (!feof ($read) )
{
$image_contents = $image_contents . fread ($read, 8194);
}
fclose ($read);
}
else
{
echo "Kopieren nicht möglich. URL konnte nicht gelesen werden.";
exit;
}
$url_part = explode ("/", $_POST["remote_url"]);
$last_url_part = (count ($url_part) - 1);
$filename = $url_part[$last_url_part];
$write = fopen ($upload_folder . $filename, "w");
fwrite ($write, $image_contents);
fclose ($write);
echo "Bild erfolgreich verschoben:" . $filename . " \r";
}
else
{
?>
[hier ist mein html-Formular, in dem die URL eingefügt und abgesendet wird]
<?php
}
?>
Momentan wird damit ganz stupide jede Datei auf den Server remotet.
Gerne würde ich vor dem Speichern auf meinem Server sicherstellen, dass nur gif, jpg und png verschoben werden und bei sonstigen Datein eine Fehlermeldung erscheint.
Das Formular sendet die Daten per method="post" an sich selbst. Möglich wäre auch ein zweites PHP, dass die Daten empfängt und prüft.
Vielleicht könnte folgende Funktion eingebaut werden:
Code: Alles auswählen
function is_valid_type($file)
{
$size = getimagesize($file);
if(!$size) {
return 0;
}
$valid_types = array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG);
if(in_array($size[2], $valid_types)) {
return 1;
} else {
return 0;
}
}
LG
PS: Später soll das Ganze dann auf einem Freehoster laufen und in einen bbCode eingebaut werden, um Remote-Uploads für Bilder zu ermöglichen.