File-Compare Server => Lokal

  • C#
  • .NET (FX) 4.0

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Radinator.

    File-Compare Server => Lokal

    Hallo!

    Ich bin gerade dabei einen Updater zu produzieren, welcher Dateien auf meinem PC mit den Dateien auf meinem Webspace synchronisiert.
    Ich greife über das FTP auf den Server zu und weiß leider nicht mehr weiter.
    Wollte zuerst die Bytes vergleichen, wird aber nichts wenn ich die Datei nicht saugen kann/möchte.
    Wie kann ich die Dateien denn vergleichen ohne sie jetzt vom Server zu saugen?


    lg
    TehBasic

    TehBasic schrieb:

    Wie kann ich die Dateien denn vergleichen ohne sie jetzt vom Server zu saugen?
    Gar nicht.

    Du kannst zwei Dateien nicht vergleichen, wenn du eine der beiden nicht hast. Ist wie, als wolltest du Eigentschaften (Gewicht, Farbe, ...) von zwei Äpfeln vergleichen, wobei du aber nur einen hast. Das ist einfach logisch und physikalisch nicht machbar.
    Was du aber machen kannst - auch wenn ich dir davon abrate einen Updater selber zu machen, ohne dich vorher in die Thematik der Verschlüsselung und Signierung eingearbeitet zu haben - ist folgender Ansatz:
    1.) Implementiere doch einfach eine Prüfsummenberechnung einmal auf dem lokalen Client und einmal in dem Webspace, in dem deine herunter zu ladende Datei liegt.
    2.) Bechne zum einen auf dem lokalen Client die Prüfsumme über deine Dateien aus, zum Andern auf dem Webspace in einer PHP Datei, welche du mittels WebRequest aufrufst und tausche die Signaturen aus.
    3.) Vergleiche die zwei Prüfsummen, falls sie unterschiedlich sind, deutet das darauf hin, dass die lokale Version veraltet ist.

    Das oben ist jetzt ein seeehr, seeehr naiver Ansatz. Ich hab oben jetzt mal bewusst die Problematik der Absicherung durch Signierung nicht berücksichtigt, da das hier zu weit führen würde. Denn wenn du keine Prüfung einbaust, ob die Datei, die du grad vergleichst oder der Hash (=Prüfsumme), die du vom WebServer bekommst, auch wirklich 1.) von dem WebServer stammt und 2.) korrekt und nicht bearbeitet ist, kann es dir passieren, dass sich ein gelangweiltes Script Kiddie/MITM Attackierer hinsetzt und deinen Updateprozess sabotiert (Client stellt anfrage, ob neue Version bereit steht, findet heraus, dass neue Version vorhanden ist, läd neue Version runter. Beim nächsten Start das selbe - oder wenn du den Prozess schlecht umgesetzt hast, bleibt der Cient in einer Updaterequest-Updateoprozess-Updaterequest Schleife hängen)

    Also: Wenn du eines deiner Programme auf dem neuesten Stand halten willst, nimm lieber sichere Lösungen her: nUpdate.
    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell