2012-06-14 10 views
5

Mam zamiar opracować aplikację na iOS i chcę używać HTML5, CSS i JavaScript. Ostateczna aplikacja powinna zostać zaimplementowana jako natywna aplikacja korzystająca z Xcode i UIWebView.Xcode: ukryj/chroń pliki zasobów w ostatecznej aplikacji na iOS?

Czy mogę ukryć lub zabezpieczyć moje pliki html w ostatecznej aplikacji? Muszę umieścić pliki w folderze o nazwie "Obsługa plików" w Xcode. Dlatego każdy może przeglądać zwykłe pliki po zakupie aplikacji, wyodrębniając plik .ipa, prawda?

Odpowiedz

-4

Można by stworzyć cały kod HTML i tak dalej również w kodzie, a następnie użyć UIWebView „s

- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL 

ręcznie załadować każdy ciąg HTML jako zwykły tekst. Radzę ci jednak, aby tego nie robić. Jeśli ktoś naprawdę chce wyizolować każdy ciąg ze skompilowanego kodu źródłowego, jest to możliwe dla niego (chyba, że ​​naprawdę robisz wymagające rzeczy).

Większość użytkowników po prostu nie dba o to, co znajduje się w pliku ipa. Jeśli możesz żyć z < 1%, który to sprawdza, nie przejmuj się zbytnio tym tematem.

Kolejny aspekt będzie również możliwy (nawet jeśli nie jest to fantastyczny pomysł): możesz wskazać swój UIWebView na tajną stronę tylko ty i twoja aplikacja wiedzą. To jest absolutnie niewskazane.

1

Można szyfrować pliki i odszyfrowywać je w środowisku wykonawczym lub nie można ich uwzględnić w pakiecie i mieć skrypt czasu kompilacji, który je odczytuje i konwertuje na dane zakodowane w aplikacji, które można załadować do swojego interfejsu UIWebView za pomocą :

- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)baseURL 
+0

Zakładam, że masz na myśli "szyfrowanie" i "odszyfrowywanie" w pierwszym zdaniu, prawda? – abarnert

+0

Tak, to działa. Zaktualizowano. – pho0

9

Istnieje wiele sposobów ochrony danych, w zależności od tego, jak dobrze chcesz chronić. Dla bardzo minimalnej ochrony przed zwykłymi hakerami, możesz użyć algorytmu string zaciemniania do zaciemniania i usuwania zaciemnień treści HTML jako NSString s. Oto example of doing that. Nie użyłem tego konkretnego kodu, ale nie zalecam też techniki ukrywania się, chyba że dane naprawdę nie są zbyt czułe.

Lepszym rozwiązaniem jest szyfrowania treści HTML, choć to więcej pracy, i może być związane z export control issues, w zależności od tego, gdzie jesteś, gdzie jesteś i dystrybucji aplikacji.

Do szyfrowania masz wiele opcji.

1)Here is an open source implementation that provides a secure version of something like NSUserDefaults. W tym kodzie nie widzę jednak odpowiednika kodu registerDefaults:, więc możliwe jest, że po uruchomieniu aplikacji w pierwszej godzinie konieczne może być pobranie treści z internetu. Ale możesz go zaszyfrować i zapisać w postaci PDKeychainBindings jako wartość ciągu. Na kolejnych przebiegów, można rozpakować przechowywane HTML "Pliki" tak:

NSString* webPageContent = 
    [[PDKeychainBindings sharedKeychainBindings] valueForKey: @"index.html"]; 

2) Oto kolejny open source project that provides AES encryption wrappers.Napiszesz kod nieprodukcyjny przed udostępnieniem swojej aplikacji do zaszyfrowania treści HTML w zaszyfrowanych plikach danych, które będą zasobami w pakiet. Po uruchomieniu aplikacja otwiera pliki i odszyfrowuje je do obiektów NSString, które można przekazać do użytkownika UIWebView przez loadHTMLString: baseURL:.

3) Wreszcie here's another example of using the underlying CommonCrypto APIs to protect bundle resources. W tym przykładzie zastosowano niestandardowy krok kompilacji do automatycznego szyfrowania zasobów w określonym folderze, co zaoszczędziłoby trochę czasu, jeśli chroniona zawartość HTML zmieni się dość często.

Powiązane problemy