Proxy erkennen

  • Proxy erkennen

    Hi,

    Um zu verhindern, dass Nutzer API Aufrufe aus der App beispielsweise mit mitmproxy einsehen können, will ich gerne alle URLSessions einfach abbrechen, sollte der Nutzer auf seinem iPhone einen Proxy konfiguriert haben.

    Bei einer älteren App habe ich das in Objective-C so geprüft:


    C-Quellcode

    1. CFDictionaryRef dicRef = CFNetworkCopySystemProxySettings();
    2. const CFStringRef proxyCFstr = (const CFStringRef)CFDictionaryGetValue(dicRef,
    3. (const void*)kCFNetworkProxiesHTTPProxy);
    4. NSString *proxyIP = (__bridge NSString *)proxyCFstr;
    5. if (proxyIP.length) {
    6. //Proxy konfiguriert
    7. }
    Ich gebe gerne zu, dass ich hiervon wenig Ahnung habe.

    Meine aktuelle App habe ich in Swift geschrieben, und ich finde hierzu nichts. Hat das jemand schonmal in Swift gemacht und könnte mir sagen, wie ich das hinkriege?

    Danke!
  • Naja, das ist im prinzip vollkommen fürn popes denn wenn ich den network-traffic analysieren will, dann mach ich das einfach mit einem proxy der für iOS (und also auch für deine app) transparent ist.
    Wenn du das verhindern willst musst du dein zertifikat pinnen - aber achtung, wenn du das nicht korrekt machst, kannst du dir damit selbst in den fuß schießen (renewal/authority-change etc...)
  • Alleine schon das du das brauchst ist schon ein Zeichen dafür das Du dein Konzept überdenken solltest.
    Wenn Du einen vernünftigen Webservice geschrieben hast, dann kann man da ruhig alles aufzeichnen was hin- und hergeschickt wird. Denn ohne eine Authentifizierung wird keiner den Webservice nutzen können. Und wenn die richtig gemacht ist, dann kommt da keiner ran. Wenn die Daten eh nicht persönlich sind, dann braucht es auch keine Authentifizierung da dann eh jeder die Daten abrufen kann wie er lustig ist.

    Der einzige Fall der mir einfällt wo dein Vorhaben Sinn machen könnte ist, wenn ich verschleiern will, dass ich illegal Daten von irgendwoher hole und benutze. Aber das will ich Dir jetzt mal nicht unterstellen

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Thallius schrieb:


    Der einzige Fall der mir einfällt wo dein Vorhaben Sinn machen könnte ist, wenn ich verschleiern will, dass ich illegal Daten von irgendwoher hole und benutze.
    Oder eben dass man Daten versenden möchte ohne dass jemand rausfinden kann was das Gerät denn nun verlässt. Aber dafür würde sich ja Pub-Priv-Key optimal eignen.

    Naja, ich denke er hat einen Webservice den er nur über seien App anbieten will, aber nicht möchte dass andere apps/portale diesen Service verwenden. Wenn er keine User-Authentifizierung hat, dann ist das Verhindern halt so gut wie unmöglich da man ja den code clientseiting ändern/inzspizieren kann und somit auch jedes Passwort und co rausfinden könnte.