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
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.
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.
Dzięki Simon. Chyba powinienem nauczyć się przestać się martwić (i uwielbiam bombę) – Kanarie
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
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. –
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