Sichere https-Verschlüsselung für iPhone App auf Webseite

8

Ich möchte eine iPhone-App verkaufen, die eine einzelne Web-Ansicht auf einer Webseite enthält, sagen wir Ссылка wie die App, um die Anmeldeinformationen, die für die Authentifizierung auf der Website erforderlich sind, effektiv zu speichern (dh nur jemand, der die App gekauft hat, kann diese Seite anzeigen)

Wie sonst hätte ich eine sichere, einfache Webansicht auf dem iPhone, ohne dass der Benutzer sich einloggen muss (im Wesentlichen wird der Kauf der App deren Authentifizierung für die Seite ausmachen)

Kann jemand dabei helfen?

    
Chris Barry 07.02.2012, 17:49
quelle

1 Antwort

18

Es gibt keinen absoluten Weg, dieses Ziel zu erreichen. Wenn Sie einen Webdienst haben, der einen gemeinsamen Berechtigungsnachweis verwendet (einer in der Anwendung gebündelt), ist es möglich, diesen Berechtigungsnachweis rückzuentwickeln. Letztendlich ist es unmöglich sicherzustellen, dass ein Client, der auf einem anderen Rechner läuft, "Ihr" Client ist.

Es hat viele Diskussionen darüber gegeben. Es ist nicht hoffnungslos, nur unmöglich zu 100% (oder sogar 90%) zu lösen. Ein einfaches gemeinsames Geheimnis über SSL stoppt die Mehrheit Ihrer Angreifer, ohne Ihre Benutzer zu schädigen oder zu viel zu kosten. Es ist Verschleierung, nicht Sicherheit, aber billig und "meist effektiv" ist viel besser als teuer und "meist effektiv".

Wenn Sie ein sehr hochwertiges Produkt haben, kann es aggressivere (teure) Lösungen rechtfertigen. Alle diese Lösungen enthalten eines von zwei Dingen:

  • Authentifizieren des Benutzers anstelle des Programms oder
  • Kontinuierliche Wachsamkeit, nach neuen Angriffen Ausschau halten und mit Fixes antworten, die sie patchen.

Letzteres ist sehr teuer und endet nie. Stellen Sie sicher, dass es sich lohnt.

Einige andere nützliche Diskussionen:

BEARBEITEN Ich wollte auf etwas hinweisen, dass ich "shared secret over SSL" erwähnt habe. Denken Sie daran, dass Sie, wenn Sie das Zertifikat nicht verifizieren, sehr einfachen Man-in-the-Middle-Angriffen ausgesetzt sind. Schnell verfügbare Proxies wie Charles können dies tun. Der beste Ansatz besteht darin, sicherzustellen, dass das zurückgegebene SSL-Zertifikat von Ihrem Stammzertifikat und nicht nur von "jedem vertrauenswürdigen Zertifikat" signiert wird. Sie können konfigurieren, welche Zertifikate von Ihrer Anwendung mit SecTrustSetAnchorCertificates() als vertrauenswürdig eingestuft werden. iOS5: PTL behandelt diese Technik in Kapitel 11 (Seite 221). Ich habe dies auch in eine Bibliothek namens RNPinnedCertValidator eingepackt.

Eine weitere gute Schicht besteht darin, ein Challenge-Response-System zu implementieren, bei dem der Server authentifiziert, dass der Client das gemeinsame Geheimnis hat, ohne ihn jemals auf den Draht zu legen. Der Wikipedia-Artikel über Herausforderung-Resonanz-Authentifizierung enthält eine gute Erklärung des Algorithmus.

    
Rob Napier 07.02.2012, 20:04
quelle

Tags und Links