Opis
Projektuję aplikację Node.JS (bardziej jak pełną stronę internetową). Aplikacja wyśle pięć plików JavaScript i będzie zawierać <script>
tagi łączące je ze sobą.
Pytanie
Jak mogę uniemożliwić użytkownikom i atakującym przeglądanie i edytowanie mojego kodu ?
Przykładem może być:
Ctrl+ Shift+I
W Devtools , goto Sources , wybierz plik do edycji (tj.
index.html
) I wpisz zmianyNaciśnięcie Ctrl+ Sspowoduje edycję na żywo
Chciałbym zapobiegać przytoczeniu powyższego przykładu ... Czy to możliwe?
Oto co myślałem:
Stworzę inny plik JavaScript po stronie klienta, prevent_keys.js
Będzie nasłuchiwał Ctrl+ Shift+ I.
Jeśli zwróci
true
(tzn. Naciśnięto klawisze), to zrobilog
to.
Jednak to nie powstrzyma użytkownika przed bezpośrednim używaniem Devtools.
javascript
web-applications
html
node.js
client-side
Edwin Pratt
źródło
źródło
Odpowiedzi:
Dosłownie nie możesz uniemożliwić użytkownikom dostępu do treści, które im wysyłasz, i modyfikowania ich. Nie masz kontroli nad przeglądarką, z której przeglądarki korzystają ani czy faktycznie pobierają kod źródłowy za pośrednictwem przeglądarki. Wykonujesz swój kod na urządzeniu innej osoby. Nie należy i nie można zakładać niczego o integralności tego urządzenia.
Jeśli masz kod, którego nie chcesz ujawniać, nie wysyłaj go do przeglądarki. Zamiast tego pozwól przeglądarce wysłać zapytanie do serwera, na którym wykonujesz tajny kod.
Jako konkretny przykład nie sprawdzaj haseł na kliencie. Klient można zmodyfikować, aby zawsze informował serwer „hasło było prawidłowe”. Zamiast tego uwierzytelnianie musi odbywać się na zaufanym serwerze.
źródło
Nie możesz Jedna z podstawowych zasad informatyki: nie można ufać klientowi . Jakikolwiek sprytny plan wymyślisz, mogę go obejść, jeśli mam kontrolę nad klientem.
źródło
Dlaczego nie chcesz modyfikować kodu?
Bezpieczeństwo? Zaufanie? Tajemnica handlowa?
Następnie nie wysyłaj kodu, poproś klienta o wysłanie żądania i zwrócenie wyniku. Może nie wynik prywatny lub uprzywilejowany, wystarczy zrobić wiele dla wielu interfejsów użytkownika.
Ponieważ nieznacznie zmodyfikowane wersje własnego kodu szkodzą dolnej linii?
Użyj zaciemniacza kodu, narzędzia zmieniającego nazwy i trywialnych segmentów kodu.
Techniki te podnoszą poprzeczkę na faktycznym poziomie umiejętności, a oprzyrządowanie wymagane do wykonania niewielkiego wariantu witryny. Pamiętaj tylko, że te techniki mogą spowolnić twój kod, wprowadzić interesujące i bezsensowne błędy i komunikaty o błędach, a mimo to mogą zostać przezwyciężone przez osobę posiadającą odpowiednie narzędzia i / lub umiejętności. Więc naprawdę zastanów się, czy to jest tego warte. Na koniec każdy mógł po prostu napisać ten sam kod.
źródło