2012-08-27 12 views
7

Pracuję nad aplikacją phonegap dla systemu Android/iOS.
Jeśli dobrze rozumiem, jeśli ktoś otworzy pakiet phonegap-app, może po prostu skopiować html/js/css do własnej aplikacji phonegap. To jest coś, co chciałbym uczynić trudniejszym.

Moja aplikacja działa bez konieczności aktywnego połączenia z Internetem i chciałbym ją zachować w ten sposób.
Najlepsze rozwiązanie, jakie mogę sobie wyobrazić, to przechowywanie (części) (40) plików HTML w macierzystych zmiennych Java/ObjectiveC i pobieranie ich przy użyciu javascript i niestandardowej wtyczki Phonegap. W ten sposób kod HTML zostanie również zaszyfrowany podczas tworzenia aplikacji.

Czy jest to opłacalne rozwiązanie lub strata czasu?ochrona przed kopiowaniem phonegap

Odpowiedz

4

Jeśli coś jest wystarczająco wartościowe, aby chronić ludzi (np. Szczegóły uwierzytelniania), to umieszczenie go w skompilowanym kodzie, który ma, nie jest wystarczająco bezpieczny.

W przeciwnym razie, co jest tak cennego w HTML, JavaScript i CSS? Nie może to być sam kod, ponieważ jeśli nie mogą go skopiować, mogą po prostu na niego spojrzeć, "och, to dobry pomysł" i skopiować pomysł bez patrzenia na kod. Dobre pomysły są cenniejsze niż linie kodu i nie można ich ukryć w ten sposób. W tym przypadku utrudniacie życie w większym stopniu, niż im to utrudniło.

+0

W tej aplikacji uważam, że html jest najważniejszą częścią. Jest to seria ćwiczeń językowych, w których pytania, poprawne odpowiedzi i opinie są przechowywane w html, a funkcjonalność jest dość prosta. I masz rację, nie chciałbym, aby moje życie było trudniejsze niż ich życie. Ponieważ jestem nowicjuszem w tego rodzaju problemach, zastanawiałem się, czy można coś zrobić bez zbytniego wysiłku. Wydajesz się zasugerować, że "kłopot" w moim rozwiązaniu zostałby napisany z wielkim H .... Nie ukrywam, że nie szukam ostatecznego, bezpiecznego rozwiązania. – Kanarie

+0

Może zrobić coś takiego, jak poprawne odpowiedzi w javascript jako '" \ u0042 \ u0043 "' zamiast '" ABC "' lub w HTML jako '" A B C ". To by tylko zwolniło osobę znającą kod na mniej niż minutę, ale zatrzymałoby to mniej doświadczonego koderem, który próbowałby zakraść się "na końcu książki", że tak powiem. –

+0

Dziękuję Jon, byłoby dobrze, gdybym był zainteresowany, aby ciężko było komuś znaleźć właściwe odpowiedzi. Jednak moim głównym zainteresowaniem jest znalezienie sposobu, aby utrudnić komuś innemu skopiowanie treści html/js/css do innej aplikacji phonegap. Im więcej o tym czytam, tym bardziej wydaje mi się, że najlepszym rozwiązaniem jest albo nic nie robić, albo wyjść i założyć bazę danych, a następnie załadować zaszyfrowane dane. – Kanarie

11

Jest to jedna z moich ulubionych odpowiedzi od PhoneGap Google Group autorstwa Kerri Shotts. Podoba mi się, ponieważ zawiera moje myśli na ten temat, ale robi to bardziej wymownie, niż mogłem:

Niezupełnie. Tak, możesz to zaciemnić, ale mógłbym to odkodować. Możesz go zaszyfrować, ale oznacza to, że klucz znajduje się gdzieś w twoim kodzie, co oznacza, że ​​mogę go również odszyfrować. Kiedy już mam urządzenie i twoje bity, mogę zrobić z nimi wszystko, co chcę.

Pamiętaj: urządzenie i system operacyjny nie są dostępne, aby chronić aplikację przed użytkownikami . Ma on chronić użytkowników przed Twoją aplikacją. Całkowicie inna strona niż bezpieczeństwo.

Należy pamiętać, że jest to w dużej mierze prawdziwe w przypadku rodzimych aplikacji. Daj mi program objC Java lub i mogę się dowiedzieć, co robi tak łatwo, jak również. Co więcej, na większości platform wszystkie zasoby graficzne są po prostu zwykłymi plikami, co oznacza, że ​​są one łatwo kopiowane.

Dlatego jest tak wiele pirackich/sklonowanych aplikacji. I ostatecznie, jeśli mam bity na twoje oprogramowanie, nie ma nic, co możesz z tym zrobić. Wszystko, co możesz zrobić, to uczynić go "trudniejszym" dla użytkownika użytkownika - i ten poziom "twardości" jest proporcjonalny (jeśli nie wykładniczy) do wysiłku wymaganego, aby uczynić go "trudniejszym" dla użytkownika. Oznacza to, że jeśli sprawisz, że 90% użytkowników nie może złamać systemu, to jeden poziom trudności w hartowaniu aplikacji; aby następnie uczynić go , tak aby 99% nie mogło go złamać, wymaga znacznego skoku w zakresie programowania trudności.

Można oczywiście tworzyć odszyfrowywane procedury w natywnym kodzie czytającym zaszyfrowane www/folder. Jeśli chcesz to zrobić, idź przed siebie . (Haker może nadal się nim ominąć.) Jest/zawsze/sposób. Am Czy chcę posunąć się tak daleko? Nie.Nie jest to warte mojego czasu ani wysiłku, zwłaszcza, gdy nie chroni mnie przed tymi, którzy naprawdę są zainteresowani oderwaniem mnie. [Kolejna kwestia: czy PG powinna to zrobić? NIE. Tylko ekspert bezpieczeństwa, a większość programistów nie jest.]

Czy mam pesymistyczny pogląd na bezpieczeństwo? Tak. Jeśli rozpowszechnisz bity , stracisz bezpieczeństwo. W związku z tym, jeśli potrzebujesz funkcjonalności , aby aplikacja była bardzo bezpieczna, te działania powinny być poza urządzeniem na bardzo bezpiecznym serwerze gdzieś za kilkoma bardzo bezpiecznymi zaporami firewall z dobroci - wie, ile bezpieczeństwa pomiędzy, aby upewnić się nikt może nigdy nie zgadnąć, w jaki sposób aplikacja uwierzytelnia się na tym serwerze.

Mówię to wszystko po prostu dlatego, że nie wierzę, że warto poświęcić na to uwagę, aby większość aplikacji martwiła się o to, że strona www/folder jest widoczna. Posunąłbym się tak daleko, aby powiedzieć, że dla 99,99% aplikacji jest to prawdziwe. Jeśli nie pracujesz w służbie zdrowia (i nie rejestrujesz wrażliwych informacji) lub rządowych lub bankowych (w rzeczywistych bankach), nie musisz się martwić o to, czy jest to . A jeśli tak, czy należy używać PG? Co więcej, czy w ogóle możesz korzystać z urządzenia mobilnego? Lepiej w mojej opinii, aby być aplikacją webową, która ma bardzo mało kodu klienta i jest w istocie czarna skrzynka.

+0

Dzięki Simon. Chyba powinienem nauczyć się przestać się martwić (i uwielbiam bombę) – Kanarie