Datei hochladen erweitert in Php

  • PHP

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Link.

    Datei hochladen erweitert in Php

    Hallo.


    Und zwar möchte ich mit Vb.net eine Datei auf einen Ftp Webspace hochladen.
    Es geht hier NICHT um sicheres Uploaden. Das soll eine Simulation(für eine Präsentation) werden letztendlich.


    Dazu möchte ich:
    -Einen Sha512 Hash mit Salt in Vb.net generieren
    -Diesen Sha512 Hash mit Salt dann an eine .php Datei übergeben (per GET)
    -Hash validieren

    Sofern der Hash (und noch andere Daten) valid sind:

    Soll auf dem Webspace geprüft werden, ob eine Datei existiert, die den gleichen Namen
    wie die hochgeladene Datei hat.

    Wenn Ja:
    Muss geprüft werden ob die übergebene Datei größer ist , als die auf dem Webspace.
    Wenn ja, soll die Datei auf dem Webspace mit der hochgeladenen Datei ersetzt werden.

    Kann mir jemand sagen, welche Methoden ich dafür einsetzen muss?

    Ich hab z.B. noch keine Php Funktion gefunden für die Hash Validierung..
    Moin,

    Daniel Baumert schrieb:

    eine Simulation(für eine Präsentation)
    Hoffentlich, um darzustellen, wie unsicher das ist.

    Du suchst hier wahrscheinlich die Funktion(en) ​hash bzw. ​hash_* (ja, * ist ein Platzhalter).
    Mit freundlichen Grüßen,
    Thunderbolt
    Wenn
    - die Übertragung über HTTPS läuft
    - der Hash von einem Passwort stammt
    - das Passwort vom Anwender eingegeben wird und nicht im Programm oder sonst wo steht
    - Hash (Passwort) und Datei in einem Request übertragen werden (und dann eher POST statt GET)

    ist das sogar relativ sicher (richtige Implementation vorausgesetzt). Hashen des Passwortes ist zwar nicht notwendig, schaden tut es aber auch nicht. Bietet sogar eine zusätzliche Schicht falls HTTPS mal wegfällt (allerdings nutzlos gegen Replay-Angriffe).
    Wenn einer der Punkte oben nicht zutrifft... tja, dann lass es lieber :D

    Ansonsten zur eigentlichen Fragestellung, wie schon angeraten, bei php.net einfach nach "file upload" oder "hash" suchen.
    ​Irgendwie wirft Php immer den gleichen Hash für ein Passwort aus ôo

    Das ist der Sinn von Hashes. Wie soll man diese denn sonst vergleichen können?

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Ich kenn mich mit Php nicht wirklich aus, muss mir das mehr oder weniger zusammenwürfeln.

    Also zunächst geht es darum, zu Prüfen, ob es sich um eine TextDatei handelt.

    Alleine da wirds schon schwierig, es gibt etliche Diskussionen im Internet, wie man das sicher überprüfen kann.

    Bin auf den Ansatz gestoßen , FileInfo zu nutzen.


    Kann ich jetzt einfach

    VB.NET-Quellcode

    1. $finfo = new finfo(FILEINFO_MIME, $_FILES['file']);
    2. echo $finfo->file($filename);


    Oder muss ich erst die Methode is_uploaded_file aufgerufen haben?


    Ich brauch generell mal irgendwie Hilfe bei der Vorgehensweise.
    Ich brauch generell mal irgendwie Hilfe bei der Vorgehensweise.

    Nein. Was du wirklich brauchst, ist ein bisschen Ahnung, und die hast du noch nicht. Was bringt es dir, wenn wir mit dir irgendeinen funktionierenden Code zusammenschustern, den du später nicht mal anpassen oder ändern kannst, weil du gar nicht weißt, was du machen musst? Es wäre schön, du würdest dir die Basics erarbeiten.
    Außerdem, wenn du VB bereits kannst, wirst du dir damit ohnehin äußerst leicht tun.

    Alternativ beauftragst du jemanden im Markplatz-Forum, die Funktionalität gemäß deiner Anforderungen zu programmieren.

    Wenn ich noch was dazusagen darf:
    Es geht hier NICHT um sicheres Uploaden

    Sollte es aber ;)


    Um konkret auf deine Fragen zu antworten (Basics vorausgesetzt):
    - Prüfen ob Textdatei: das kannst du anhand des MIME-Type herausfinden -> php.net/manual/de/function.mime-content-type.php
    - Dateiunterschiede feststellen -> Hash der Dateien erstellen und prüfen, ob sie identisch sind - wie du schon sagtest eben z.B. mit SHA512
    - Feststellen welche Datei größer ist: mit der PHP filesize() Funktion beide Files vergleichen. Beispiel: $file1_groesser = filesize('file1.txt') > filesize('file2.txt');

    Alleine da wirds schon schwierig, es gibt etliche Diskussionen im Internet, wie man das sicher überprüfen kann.

    Ja, mehrere Wege führen zum Ziel. Aber wieso Foren durchforsten, wenn PHP die FileInfo-Klasse für dich bereitstellt? php.net/manual/de/ref.fileinfo.php und fertig, wüsste nicht weswegen es im Internet Diskussionen darüber geben sollte ;) Theoretisch könnte man das auch mit einem RegEx-Pattern prüfen (if(preg_match('/\.txt/i', $dateiname)){ /* ... */ }, ist aber weniger schön.
    php.net sollte erste Anlaufstelle für dich sein. Mit Foren-durchforsten verschwendest du nur Zeit.


    Link :thumbup:
    Hello World