Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   PHP Script zum Dateihash berechnen (https://www.delphipraxis.net/168483-php-script-zum-dateihash-berechnen.html)

Luckie 24. Mai 2012 01:04

PHP Script zum Dateihash berechnen
 
Ich brauchte jetzt mal schnell eine Anwendung, die Dateihashes berechent. Also hab eich mir ein PHP Script geschrieben:
Code:
<?php
   
   /*
      Projekt : -
      Date    : 2012-05-23
      Author    : Michael Puff, http://michael-puff.de
      MD5, SHA1 und CRC32 Dateihashes
   */
   
   ini_set('track_errors', 1);
   
   $action = $_GET['action'];
   $filename = $_FILES['file'];
   $dir = $_SERVER["DOCUMENT_ROOT"]."/Programmierung/DaddysLittleHelpers/";

   function showForm() {
      echo "<hmtl>\n";
      echo "<body>\n";
      echo "<strong>MD5 und SHA1 Dateihashes</strong><br><br>\n";
      echo "<form enctype=\"multipart/form-data\" action=\"FileHash.php?action=hash\" method=\"post\">\n";
      echo "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"3000000\">\n";
      echo "<input name=\"file\" type=\"file\" size=150><br>\n";
      echo "<input type=\"submit\" value=\"Hashes erzeugen\">\n";
      echo "</form>\n";
      echo "</body>\n";
      echo "</html>\n";
   }
   
   function upload($dir, $file) {
      global $errorMsg;
      $ret = move_uploaded_file($file['tmp_name'], $dir.$file['name']);
      $errorMsg = $php_errormsg;
      return $ret;
   }
   
   echo "<a href=\".\">Zurück</a><br><br>\n";
   
   if (empty($action)) {
      showForm();
   }
   else {
      if (upload($dir, $filename)) {
         echo "<strong>Dateiname: ".$filename['name']."</strong><br>\n";
         echo "<pre>MD5 : ".md5_file($dir.$filename['name'])."\n";
         echo "SHA1: ".sha1_file($dir.$filename['name'])."</pre>\n";
         if (!unlink($dir.$filename['name'])) {
            echo "Datei ".$filename['name']." konnte nicht gelöscht werden.\n";
         }
      }
      else
      {
         echo "Es ist ein Fehler beim Hochladen der Datei <i>".$filename['name']."</i> aufgetreten.<br>".$errorMsg;
      }
   }

?>
Kann mir da einer irgendwie Code oder Dateien auf meinen Webspace einschmuggeln?

BUG 24. Mai 2012 01:22

AW: PHP Script zum Dateihash berechnen
 
Es könnte definitiv nicht schaden, den Dateinamen zu escapen, auch wenn mir keine konkreter Angriff einfallen würde.

IMHO kann man mit dem Skript beliebige Dateien in
Code:
$_SERVER["DOCUMENT_ROOT"]."/Programmierung/DaddysLittleHelpers/"
löschen (siehe Notes von move_uploaded_file()).

Außerdem finde ich es merkwürdig, dass du die Datei verschiebst, um sie dann zu löschen. Wäre ein Check mit is_uploaded_file() und ein darauf folgendes Hashen (und löschen) nicht einfacher?

Luckie 24. Mai 2012 01:28

AW: PHP Script zum Dateihash berechnen
 
Mist daran habe ich nicht gedacht. Es würde auch ohne verschieben gehen?

BUG 24. Mai 2012 02:31

AW: PHP Script zum Dateihash berechnen
 
Laut Stackoverflow funktionierts.

Aber is_uploaded_file() kann nicht schaden (sollte nicht so viel Kosten wie das Kopieren) und Löschen musst du die temporäre Datei afaik trotzdem.

Luckie 24. Mai 2012 09:14

AW: PHP Script zum Dateihash berechnen
 
Ok, am liebsten wäre es mir dann, wenn ich die hochgeladene Datei nicht verschieben würde. Gibt es denn eine Funktion, die die Datei in den temporären Ordner hochläd, aber nicht verschiebt?

BUG 24. Mai 2012 12:12

AW: PHP Script zum Dateihash berechnen
 
Manchmal stellst du dich aber auch an :stupid:
Zitat:

Zitat von http://stackoverflow.com/a/5572126
You can use md5_file ou sha1_file function. For example, if your post variable is filevar:
Code:
$myhash = md5_file($_FILES['filevar']['tmp_name']);

PHP-Quellcode:
$_FILES['filevar']['tmp_name']
ist schon ein Dateiname einer temporären Datei (die du im Script dann entweder verschiebst oder löschst).

Luckie 24. Mai 2012 13:03

AW: PHP Script zum Dateihash berechnen
 
Zitat:

Zitat von BUG (Beitrag 1167908)
Manchmal stellst du dich aber auch an :stupid:

Ich hatte heute mein Snikers noch nicht. Dank dir.

Luckie 24. Mai 2012 13:24

AW: PHP Script zum Dateihash berechnen
 
Hm, dann bekomme ich die fehlermeldung:
Code:
Warning: md5_file(): Filename cannot be empty in /var/www/l3s11195/html/Programmierung/DaddysLittleHelpers/FileHash.php on line 38
Ich habe es auch schon so
PHP-Quellcode:
md5_file($_FILES['tmp_name'])
versucht, mit dem gleichen Ergebnis.

BUG 24. Mai 2012 13:31

AW: PHP Script zum Dateihash berechnen
 
"filevar" sollte deinem "file" entsprechen, also könnte es so gehen:
PHP-Quellcode:
md5_file($filename['tmp_name']);
// oder:
md5_file($_FILES['file']['tmp_name']);

Luckie 24. Mai 2012 13:42

AW: PHP Script zum Dateihash berechnen
 
Ach so. OK, dann geht es.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz