Frage:
Ausblenden des JavaScript-Quellcodes
Celeritas
2013-02-14 23:25:22 UTC
view on stackexchange narkive permalink

Sollte man in einer Web-App versuchen, so viel Code wie möglich zu verbergen, beispielsweise vor der Ansichtsquelle? Insbesondere habe ich mich gefragt, ob JavaScript ausgeblendet werden soll, insbesondere solche, die für Ajax verwendet werden. Ich dachte, wenn das JavaScript eine externe Datei wäre, könnte sich die Datei nicht auf dem Webserver befinden oder mit eingeschränkt werden. Httaccess

BEARBEITEN: Mir ist klar, dass ich das nicht vollständig verhindern kann Benutzer sehen JavaScript nicht so, wie es am Ende interpretiert wird. Ich habe mich jedoch gefragt, ob es sinnvoll ist, sie davon abzuhalten, solchen Code anzuzeigen. Dies macht es beispielsweise etwas schwieriger, als einfach www.mywebsite.com/how_login_is_done.js

einzugeben
Könnte JS in der Sitzungsschicht für PHP versteckt sein? (Erinnern Sie sich nur vage daran, etwas darüber gehört zu haben)
@Travis - Kann (clientseitiges) JS durch `____` ausgeblendet werden? ** Nein. ** Damit der Browser das JS ausführen kann, muss er es herunterladen. Ich habe keine Ahnung, was "Session Layer für PHP" bedeutet. TCP / IP hat nicht wirklich eine OSI-Sitzungsschicht (HTTP wäre die Anwendungsschicht, die den Schichten 5 bis 7 entspricht), obwohl HTTP normalerweise (Benutzer-) Sitzungen über Sitzungscookies durchführt (eindeutige Textzeichenfolgen, die einen Benutzer wie eine Guid identifizieren). in HTTP-Anforderungsheadern. Mir ist kein Browser bekannt, in dem JS ausgeführt wird, der über ein Cookie oder einen HTTP-Header bereitgestellt wird, und wenn dies der Fall wäre, wäre es immer noch nicht "versteckt", da es leicht abrufbar wäre.
Es gibt kaum einen Grund, überhaupt zu versuchen, den Code zu verbergen, der für die grundlegende Verwendung von Webseiten verwendet wird. Der Hauptgrund, warum Leute Code verschleiern, ist, dass sie nicht möchten, dass andere diesen Code kopieren können. Durch die Verschleierung des Codes wird es für jemanden * schwieriger * (nicht unmöglich und nicht sehr schwierig), seinen Code zu kopieren und auf seiner eigenen Website zu verwenden. Es ist keine Sicherheitssache.
@TomMarthenal Wie erschwert das Verschleiern des Codes das Kopieren? Was meinst du mit "Es gibt wenig Grund, überhaupt zu versuchen, den Code zu verbergen, der für die grundlegende Verwendung von Webseiten verwendet wird"?
@Celeritas Wenn Ihr Unternehmen eine coole Web-App mit viel clientseitigem JavaScript erstellt, möchten sie wahrscheinlich verhindern, dass andere Unternehmen einen Klon ihrer Web-App erstellen und ihre Kunden stehlen. Indem Sie den Code verschleiern, den jeder sehen kann, machen Sie es * schwieriger *, eine Kopie des Codes zu erstellen, da er für einen Menschen absichtlich schwer verständlich ist. Sie können immer noch eine Kopie des verschleierten Codes erstellen, aber normalerweise möchten Sie ihn ändern (z. B. um mit Ihrem Server zu arbeiten), und das ist schwieriger. Das Verschleiern von Code hat wenig mit Sicherheit und viel mit dem Schutz von Eigentum zu tun.
Fünf antworten:
Tom Leek
2013-02-14 23:47:27 UTC
view on stackexchange narkive permalink

Javascript-Code wird im Client-Browser ausgeführt, sodass der Client-Browser den Code sieht und jeder Benutzer ihn abrufen kann. Bestenfalls können Sie den Code verschleiern, um seine Bedeutung und sein Verhalten zu verbergen. Die Verschleierung wird motivierte Angreifer nicht abschrecken (sie werden nur ein bisschen wütender), daher wäre es ziemlich unklug, sie als Grundlage für Ihr Sicherheitsmodell zu verwenden.

Wenn Sie Code ausblenden möchten, tun Sie dies nicht Sende es an die Maschine des Angreifers. Behalten Sie es auf der Serverseite.

Sie können den Code auch minimieren, um es für einen Angreifer noch ärgerlicher zu machen, den Code durchzugehen.
rook
2013-02-14 23:33:57 UTC
view on stackexchange narkive permalink

Dies ist nicht möglich, da Sie das Verhalten eines Clients nicht erzwingen können. Alle Anfragen des Clients können mit TamperData oder BURP abgefangen und bearbeitet werden. Jeder JS, der auf einem Client ausgeführt wird, kann mit FireBug debuggt werden.

Ich habe einige Entwickler gesehen, die den Weg der (in) Sicherheit durch Dunkelheit eingeschlagen haben, was ich als a betrachte sorgfältig entwickelte Sicherheitslücke, die vollständig vermieden werden sollte.

"Sorgfältig entwickelte Sicherheitslücke". Bester Domitian für Dunkelheit.
Heh, und die ganze Zeit, die für diese sorgfältig entwickelte Verwundbarkeit verschwendet wird, während eine großartige karmische Ego-Massage für denjenigen, der sie ausführt, die beste Zeit ist, um anderswo ein Sicherheitsmodell zu entwickeln, das tatsächlich funktioniert.
dr jimbob
2013-02-15 00:32:51 UTC
view on stackexchange narkive permalink

Zunächst sollte jedes serverseitige Javascript, das Sie möglicherweise ausführen (z. B. wenn Ihr Webserver node.js ist), vor Besuchern ausgeblendet werden. Jedes clientseitige Javascript muss von Benutzern heruntergeladen werden, damit es in ihren Browsern ausgeführt werden kann, und kann nicht ausgeblendet werden. Sie können Ihren Code minimieren / uglifizieren und wenn Sie möchten, und Sie sollten sich nicht gezwungen fühlen, auch die ursprüngliche nicht minimierte Version bereitzustellen. Sie haben jedoch immer noch voll funktionsfähigen minimierten Code auf ihrem Computer. Der Hauptunterschied besteht darin, dass die verkleinerte Version keine geeigneten beschreibenden Namen mehr enthält, die der Mensch analysieren kann. Dies macht es etwas schwieriger, die clientseitige Logik zu durchlaufen, aber es ist relativ einfach, da Sie einen JS-Debugger in die meisten modernen Browser integriert haben.

Fazit: Sie können nicht davon ausgehen, dass Ihr clientseitiges Javascript geheim ist - es wird vom Browser ausgeführt.

H A
2014-12-18 13:04:42 UTC
view on stackexchange narkive permalink

Optionen:

  • Laden Sie den clientseitigen JavaScript-Code, nachdem sich der Benutzer auf der Website angemeldet hat.
  • Wenn authentifizierte Benutzer immer noch nicht angezeigt werden sollen Laden Sie dann den JS-Code auf den Client, der eine andere JS-Datei aufruft, die auf dem Server ausgeführt wird, oder rufen Sie einen Dienst wie eine WebAPI auf. Natürlich möchten Sie den Kommunikationskanal sichern, möglicherweise mithilfe von HTTPs.
  • mincewind
    2014-12-18 19:27:00 UTC
    view on stackexchange narkive permalink

    Erschwert der Yui-Kompressor nicht die Lesbarkeit für den Menschen? In jedem Fall sollten Sie die Validierung nicht nur auf der Clientseite durchführen. Denken Sie daran, dass es nicht umsonst als Client-Server bezeichnet wird. Lassen Sie den Server also den größten Teil der Arbeit erledigen. Die Sache, an die man sich erinnern sollte, ist, dass das World Wide Web niemals für den Endpunkt undurchsichtig sein sollte. Dieser Spitzname gehört zu nativen Anwendungen.

    schwierig für die menschliche Lesbarkeit = Verschleierung / Minifizierung / Ulgifizierung, die bereits diskutiert wurde.


    Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
    Loading...