2010-12-13 7 views
5

W każdym razie zaszyfrować rozszerzenie Chrome, nie ujawniając kodu źródłowego?Szyfruj rozszerzenie Chrome?

+1

Pomyślałem przez chwilę, dopóki nie zobaczyłem z tagów, że masz na myśli rozszerzenie Chrome :) - powinieneś edytować swoje pytanie. –

+0

Zaktualizowane podziękowania. – jprim

Odpowiedz

8

możesz ukryć swój kod za pomocą obfuscatora. istnieje wiele dostępnych na rynku.

Istnieje niewiele narzędzi, takich jak kompilator Google Closure, a na rynku dostępnych jest wiele internetowych aplikacji do wykrywania wirusów javascript. możesz użyć dowolnego. ale nie gwarantuje to poufności kodu. każdy ekspert z javascript może usunąć ten kod z zaciemnienia.

Oto dwie metody: 1. Udostępnienie swojej funkcjonalności za pośrednictwem usług internetowych. tak ważny kod znajduje się na serwerze, a rozszerzenie komunikuje się z serwerem i przetwarza dane wyjściowe z serwera. 2. Użyj NPAPI, ale nie jest to dobra metoda.

Jak dla mnie dobrą strategią jest staranie się dać dobre rozszerzenia dla użytkownika. jeśli na rynku jest już coś niesamowitego, żadne ciało nie będzie próbowało kopiować twojego addona. staraj się wyprzedzić swoich konkurentów.

EDYCJA: NPAPI jest przestarzałe.

+0

Ponieważ Chome zaktualizował wszystkie swoje zabezpieczenia w manifeście v2, funkcja 'eval' nie może być dłużej używana. Myślę, że ze względu na sposób działania obfuscatorów wszyscy oni potrzebują eval, więc nie można dłużej chronić kodu przy użyciu tej metody. –

+0

@ChristianJuth Obfuscators nie zawsze używają 'eval', a nawet z v2 możliwe jest włączenie' unsafe-eval' jeśli to konieczne. – Xan

+0

@Xan My bad. Zmieniłem trochę treść odpowiedzi. Tylko z ciekawości możesz zamieścić link do obfuscatora, który nie używa eval. Jestem ciekawa, jak działają. –

4

jak można przeczytać here nie można. możesz uczynić swój kod trudnym do odczytania i zrozumienia, ale to wszystko.

(to inne pytanie dotyczy ukrywania kodu javascript na stronie html, ale to w większości takie samo (o ile mi wiadomo, rozszerzenie chrome jest napisane po prostu w js/css/html, proszę poprawić mnie jeśli myliłem się))

+1

Lub można napisać przy użyciu NPAPI/NaCL/PEPPER :) (C++) –

0
  1. zostawić ważną logikę kodu na serwerze (WebServices Pomoc)
  2. wstrzyknąć wrażliwą html i js do iframe (stworzenie tej html można zrobić dynamicznie)

Ale myślę, że wszystko sprowadza aż do architektury twojego kodu

-1

Z manifestem v2 obfuscatory są trudniejsze w użyciu, ponieważ eval jest uważane za niebezpieczne ze względów bezpieczeństwa.

Być może jednym z największych zmian w nowym oczywistego schematu v2 jest to, że rozszerzenia nie mogą już korzystać z dynamicznych technik oceny skrypt jak eval() lub nowej funkcji(), lub przechodzą ciągi kodu JS do funkcji, które spowodują eval() do użycia, jak setTimeout(). Ponadto niektóre powszechnie używane biblioteki JavaScript, takie jak Mapy Google i niektóre biblioteki szablonów, wykorzystują niektóre z tych technik.

Źródło https://developer.chrome.com/extensions/tut_migration_to_manifest_v2#using

Polecam tylko minifying kod. Sposób działania minifier (biorąc pod uwagę, że nie wszystkie działają zupełnie tak samo) to usunięcie każdej przestrzeni i zmianę nazw zmiennych na pojedyncze litery w celu zmniejszenia znaków. To usuwa wiele znaczeń z twojego kodu i sprawia, że ​​bardzo trudno jest je przeczytać. Nie jest to pełny dowód, ale będzie to dodatkowy żmudny krok, aby przeczytać swój kod. Ponadto minifiery zostały zaprojektowane pod kątem kompresji i przyspieszenia działania kodu. Mój ulubiony minifier to UglifyJS.