Wir möchten in unserer App einen Webdienst verwenden, der natürlich eine URL aufrufen muss. Es ist nicht HTTPS, einfach nur altes HTTP mit NSURLConnection.
Das Problem ist: Dieser Web-Service ist sehr teuer und jeder tausend Anrufe kostet uns echtes Geld. Die Angst ist, dass jemand herausfinden könnte, welche URL wir anrufen und diese dann missbrauchen, wodurch die Kosten explodieren. Es gibt keine Möglichkeit für uns nachzuverfolgen, ob ein Aufruf an diesen Webdienst legitim war.
Wir berechnen basierend auf wie vielen Apps wir verkaufen, multipliziert mit einer Annahme, wie oft diese App durchschnittlich pro Nutzer verwendet wird. Wir haben einige gute Statistiken, auf denen wir unsere Annahmen basieren.
Gibt es bekannte Möglichkeiten herauszufinden, welche URL eine App im Internet anruft, um Informationen abzurufen?
Sie können problemlos einen Netzwerk-Sniffer verwenden, während das Telefon über WLAN verfügt, um diese Informationen herauszufinden. Es scheint, dass es wirklich wichtig ist, dass Sie SSL mit einem sicheren Token in der URL verwenden.
Wenn dies keine Option ist, können Sie möglicherweise Ihren eigenen Proxy-Dienst bereitstellen, der SSL- und Sicherheitstoken verwendet. Proxy gewährt auch die Möglichkeit, Anfragen zu drosseln und Benutzer zu blockieren, die als bösartig bekannt sind. Throttling ist eine Obergrenze für die Ausgaben, die jedem Benutzer innerhalb eines bestimmten Zeitintervalls entstehen können. Ein weiterer Vorteil eines Proxys besteht darin, dass man Statistiken erfassen und die Kosten für verschiedene Benutzer messen kann, die die Erkennung böswilliger Benutzer und die Geschäftsplanung erleichtern. Proxy könnte Ihnen auch etwas Geld sparen, wenn der Dienst dahinter zustandslos ist, indem Sie einen Cache hinzufügen, der viele teure Anrufe entfernen würde.
Wenn der Web-Service nicht verschlüsselt ist, wäre es trivial, einen Proxy zu verwenden, um die Web-Anfragen des Telefons abzufangen. Wenn der teure Web-Service nicht zumindest eine Form der Basis-Authentifizierung bietet, würde ich ernsthaft darüber nachdenken, seine URL in eine öffentliche App einzubinden.
Die Verwendung von einfachen URLs ist eine sichere Methode, mit der Skript-Kiddies Sie aus dem Geschäft bringen können. Wenn es für Sie nicht möglich ist, nachzuverfolgen, ob ein Anruf zu dem teuren Webdienst legitim war, richten Sie Ihren eigenen Webdienst vor dem echten Webdienst ein, um sicherzustellen, dass Ihr eigener Webdienst die Legitimität des Anrufs überprüfen kann Anfrage an den echten Webservice.
Ja, es gibt viele Möglichkeiten, dies zu tun. Verbinden Sie zum Beispiel das iPhone mit einem WLAN-Netzwerk, in dem der Router über einen transparenten Proxy verfügt. Untersuchen Sie die Protokolle des Proxys. Sie sehen alle URLs. Hängt davon ab, wie bestimmt Ihre Benutzer sind, aber das ist ziemlich einfach.
Ich ignoriere die Tatsache, dass Leute, die ihre Geräte jailbreaken, möglicherweise Ihre Anwendung ansehen, ich glaube, es ist möglich, den Verkehr wie jedes andere Gerät (Laptop, Tablet, etc.) zu untersuchen, wenn jemand über einen WLAN-Hotspot mit Anwendungen schnüffelt wie zum Beispiel WireShark . Ich bezweifle jedoch, dass dies ein großes Risiko für ein 3G-Mobilfunknetz darstellen würde.
Gute Frage.
Wie viele schon gesagt haben, ist es einfach, die URLs zu ermitteln, die Ihre App anfordert .
Hinweis zu HTTPS: Da Sie jedoch HTTPS verwenden, sind Sie in Ordnung, da die Domäne über HTTPs nicht mit der IP-Adresse verknüpft ist und Personen die URL-Abfragezeichenfolgenparameter nicht sehen können . Wenn Ihre URL beispielsweise Ссылка lautet, können sie "uid = mylogin & amp; pass" nicht sehen = mypass ", und sie können wahrscheinlich nur die IP-Adresse sehen, nicht den Domain-Namen selbst. (Siehe Ссылка )
Hinweis: Es ist sicher anzunehmen, dass Apple bei der Überprüfung Ihrer App eine Art HTTP-Anfragediagnose durchführt - was sinnvoll wäre, weil es in Ihrem Interesse ist, herauszufinden, was Ihre App aus vielen Blickwinkeln macht.
Tags und Links iphone ios security ipad networking