Frage

Wir sind dabei, eine native Windows-Anwendung (MFC) zu schreiben, das einige Daten auf unseren Web-App wird das Hochladen. Windows-App Benutzer Login ermöglichen und danach wird es in regelmäßigen Abständen einige Daten auf unseren Web-App hochladen. Upload wird über eine einfache HTTP POST zu unserem Web-App erfolgen. Die Sorge, die ich habe, ist, wie können wir sicherstellen, dass der Upload von unserer App tatsächlich kam und nicht von Locke oder so ähnlich. Ich denke, wir sind hier in einer Art von öffentlichen / privaten Schlüsseln suchen. Aber ich bin sicher nicht, wenn wir irgendwie können nur einen öffentlichen Schlüssel in unserem Win-App ausführbaren einbetten und mit ihr geschehen. Oder würde, dass öffentliche Schlüssel sein, leicht zu extrahieren und außerhalb unserer App?

Wie auch immer, wir bauen beide Seiten (Client und Server), so ziemlich alles ist eine Option, aber es muss Arbeit über HTTP (S). Aber wir haben keine Kontrolle über die Ausführungsumgebung von win (Client) App sowie den Benutzer, dass die App auf sein / ihr System läuft ist das einzige, das von Gaming das System etwas zu gewinnen steht.

War es hilfreich?

Lösung

Schließlich ist es nicht möglich, die Identität einer Anwendung zu beweisen, auf diese Weise, wenn es auf einem Computer ausgeführt wird Sie nicht besitzen. Sie könnten Tasten, spielt mit Hashes und Prüfsummen, aber am Ende des Tages, alles, was auf Code beruht läuft auf einem fremden Maschine einbetten können gefälscht werden. Die Schlüssel können extrahiert werden, können Code sein Reverse-engineered- es Sicherheit durch Unklarheit ist.

Verbringen Sie Ihre Zeit arbeiten an der Validierung und Datenbereinigung, und wenn Sie wirklich etwas sichern wollen, sichern Sie den Endbenutzer mit einem Client-Zertifikat. Alles andere ist nur eine Verschwendung von Zeit und ein falsches Gefühl der Sicherheit.

Andere Tipps

über das Beste, was Sie tun könnten, wäre, die Verwendung von HTTPS mit Client-Zertifikaten. Vermutlich mit WinHTTP 's-Schnittstelle.

  

Aber ich bin sicher nicht, wenn wir irgendwie können nur einen öffentlichen Schlüssel in unserem Win-App ausführbaren einbetten und mit ihm getan werden.

Wenn der Client selbst ist auf dem Server zu identifizieren, müsste sie den privaten Schlüssel eingebettet sein.

  

oder wäre das zu einfach, zu extrahieren und der Einsatz außerhalb unserer App?

Wenn Sie keine Kontrolle über die Ausführungsumgebung des Client-Anwendung, alles, was das App tun können, können analysiert werden, automatisiert und reproduziert von einem Angreifer die Kontrolle tut das Umfeld.

Sie können setzen obfuscatory Schichten rund um die Kommunikationsverfahren, wenn Sie müssen, aber Sie werden nie das Problem beheben. Multiplayer-Spiele haben versucht, dies zu bekämpfen Betrug jahrelang zu tun, aber am Ende ist es nur ein Verschleierungs Wettrüsten, die nie gewonnen werden können. Blizzard Art und Weise mehr Ressourcen haben als du, und sie können es entweder nicht verwalten.

Sie haben keine Kontrolle über die Binärdateien, sobald Ihre App verteilt wird. Wenn all Signatur- und Verschlüsselungslogik reside in der ausführbaren Datei kann extrahiert werden. Clever Programmierer den Code herauszufinden und interoperable Systeme bauen, wenn es genug Motivation ist, dies zu tun. Deshalb DRM nicht funktioniert.

Ein komplexes System einen Schlüssel für die MAC-Adresse eines PC zum Beispiel binden ist sicher zum Scheitern verurteilt.

Seien Sie nicht eine bestimmte ausführbare oder System vertrauen, aber die Benutzer vertrauen. Entrust jeder von ihnen mit einer privaten Schlüsseldatei durch ein Passwort geschützt und sie zu erklären, wie diese Schlüssel, um sie als Einreicher von Inhalten auf Ihrem Service zu identifizieren.

Da Sie den Client sind Steuern, könnte man genauso gut einbetten den Schlüssel in der Anwendung, und stellen Sie sicher, dass die Benutzer nicht über Lesezugriff auf die Anwendung Bild - Sie benötigen die Logik 2 Ebenen zu trennen - 1, dass der Benutzer ausgeführt wird, der andere, dass eine Verbindung mit dem Dienst über HTTP (S) -., da der Benutzer immer Zugriff auf eine Anwendung gelesen haben er läuft

Wenn ich richtig verstanden habe, werden die Daten automatisch, nachdem der Benutzer anmeldet gesendet -. Das klingt nur der Serviceteil benötigt wird,

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top