Beschreibung
Ich entwerfe eine Node.JS-Anwendung (eher wie eine vollständige Website). Die App sendet fünf JavaScript-Dateien und verfügt über <script>
Tags, die sie miteinander verknüpfen.
Frage
Wie kann ich verhindern, dass Benutzer und Angreifer meinen Code überprüfen und bearbeiten ?
Ein Beispiel wäre:
Ctrl+ Shift+I
In Devtools , GOTO Quellen , wählen Sie eine Datei zu bearbeiten (dh
index.html
) und Schreib BearbeitungenDurch Drücken von Ctrl+ Swird dazu führen , Live - Bearbeitung auftreten
Ich möchte verhindern , dass das obige Beispiel passiert ... Ist es möglich?
Folgendes dachte ich:
Ich werde eine weitere clientseitige JavaScript-Datei erstellen, Prevent_keys.js
Es wird auf Ctrl+ Shift+ hören I.
Wenn es zurückkehrt
true
(dh die Tasten wurden gedrückt), werdenlog
die Tasten angezeigt.
Dies hindert den Benutzer jedoch nicht daran, Devtools direkt zu verwenden.
quelle
Antworten:
Sie können Benutzer buchstäblich nicht daran hindern, auf Inhalte zuzugreifen und diese zu ändern, die Sie ihnen senden. Sie haben keine Kontrolle über den Browser oder welchen Browser sie verwenden oder ob sie tatsächlich Ihren Quellcode über einen Browser herunterladen. Sie führen Ihren Code auf dem Gerät einer anderen Person aus. Sie sollten und können nichts über die Integrität dieses Geräts annehmen.
Wenn Sie Code haben, den Sie nicht verfügbar machen möchten, senden Sie ihn nicht an den Browser. Lassen Sie den Browser stattdessen eine Anfrage an einen Server senden, auf dem Sie den Geheimcode ausführen.
Überprüfen Sie als konkretes Beispiel keine Kennwörter auf dem Client. Der Client kann so geändert werden, dass dem Server immer mitgeteilt wird, dass das Kennwort korrekt ist. Stattdessen muss die Authentifizierung auf Ihrem vertrauenswürdigen Server erfolgen.
quelle
Das kannst du nicht. Eine der Grundregeln des Rechnens: Sie können dem Client nicht vertrauen . Egal an welches clevere Schema Sie denken, ich kann es umgehen, wenn ich die Kontrolle über den Kunden habe.
quelle
Warum soll der Code nicht geändert werden?
Sicherheit? Vertrauen? Handelsgeheimnis?
Senden Sie dann nicht den Code, lassen Sie den Client eine Anfrage senden und geben Sie ein Ergebnis zurück. Möglicherweise kein privates oder privilegiertes Ergebnis, für viele Benutzeroberflächen reicht es aus, nur ein Ergebnis zu erzielen.
Weil leicht modifizierte Versionen Ihres eigenen Codes Ihrem Endergebnis schaden?
Verwenden Sie einen Code-Obscurer, einen Name-Mangler und triviale Codesegmente.
Diese Techniken legen die Messlatte für das tatsächliche Können und die erforderlichen Werkzeuge höher, um eine geringfügige Variante Ihrer Website zu erstellen. Beachten Sie jedoch, dass diese Techniken Ihren Code verlangsamen, interessante und bedeutungslose Fehler und Fehlermeldungen verursachen und dennoch von jemandem mit den richtigen Tools und / oder Fähigkeiten überwunden werden können. Überlegen Sie also wirklich, ob sich das lohnt. Am Ende des Tages konnte jeder den gleichen Code schreiben.
quelle