Ankündigung

Einklappen
Keine Ankündigung bisher.

Wie sicher ist die app.js von socket.io ??

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wie sicher ist die app.js von socket.io ??

    Hallo Forum,

    nun ich wollte mal wissen ob die app.js eines socket.io Servers von fremden eingesehen werden kann?

    Ich meine nicht diese: http://domain.de:8080/socket.io/socket.io.js das ist ja nur die Verbindung zum Server.
    Gemeint ist eben diese, wo per SSH ausgeführt wird: node srv/node_modules/socket.io/lib/app.js

    Diese Datei ist im HTTP-Protokoll (DOM) nicht verlinkt (Sichtbar) und kann über den Browser nicht wie jede andere js-Datei einfach geöffnet werden.
    Aber gibt es da Mittel und Wege die Date über Websocket einzusehen und anders wie?


    Der Grund warum ich frage ist weil ich unter anderem MySQL-Daten dort drin stehen habe damit der Socket-Server Zugriff auf die Datenbank hat.


    MFG: Paykoman

  • #2
    Woher sollen wir denn wissen ob in deiner app.js nicht ein http-server gestartet wird, der die app.js (versehentlich) auch ausliefert? Der Unterschied zwischen clientside und serverside JavaScript ist dir hoffentlich klar?
    [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

    Kommentar


    • #3
      Also es ist schon mal kein express Server.

      Hab mal fix meine Struktur zusammengefasst.

      app.js

      Code:
      var server = require('http').createServer();
      var io = require('socket.io').listen('7979', { log: false }),
          lobby = require('./lobby.js'),
          worker = require("socket.io-client"), // here the client modul for connect to workplace-socket-server
          workerTokken = 'nfof6gn7m',
          workerCount = 1,
          fs = require('fs'),
          mysql = require("mysql"),
          squel = require("squel"),
          vali = require('validator'),
          striptags = require('striptags'),
          ftpCon = require('jsftp'),
          xhr = require('request'),
          errFileName = 'error_dev';
      
      /* db array here */
      
      
      /** Server */
      var socket = io.listen(server);
      socket = socket.of('/global'); // set namespace
      socket.on('connection', function(client) // run server
      {
          /* emits here */
      });
      Ein http-server ist ja schon von Nöten sonst kann ja keine Kommunikation mit Webseite stattfinden ?

      ::EDIT::
      ok sehe gerade hatte vorhin das mit dem "aus-versehen" überlesen. Hmm so gut kenne ich mich mit der Architektur noch nicht aus aber denke des dürfte ja aber nicht mal eben so passieren oder?

      Kommentar


      • #4
        interessant wäre auch zu wissen wie es mit den anderen Dateien aussieht die oben per require() eingebunden werden. Die lobby.js ist auch von mir und unteranderem für auth, spam und Daten-speicherung verantwortlich.
        Wenn es bei diesen Dateien schon sicherer wäre könnte ich ja eine Funktion einbauen die mir die DB-Verbindung zur Verfügung stellt.

        Was aber hinfällig ist wenn eh alle einsehbar wären

        Kommentar


        • #5
          Javascript, ie. Clientseite. Ich würde mal sagen, alles was du dahin schickst ist auf dem Client einsehbar.
          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

          Kommentar


          • #6
            Dein serverseitiges JavaScript das unter node.js läuft ist nicht ohne weiteres von außen einsehbar. Das ist dann im Prinzip so, als würdest du PHP verwenden. Erst dann, wenn ein HTTP-Server läuft, der bei einem Request wie http://localhost/app.js diese Datei auch ausliefert, wäre das möglich. Für gewöhnlich platziert man aber irgendwo ein public-Verzeichnis und setzt express.static (oder gar Apache, NGINX) darauf an. In deinem Beispiel sehe ich keine definierten Routen, d.h. dein HTTP-Server tut erstmal gar nix, wenn ein Request reinkommt - bis auf den Socket.io-Part.

            Grundsätzlich weiß dein Browser aber nichts von dem serverseitigen JavaScript. Dein Browser sieht nur das, was der Webserver ihm bei einem Request auch ausliefert.

            Mal ein Beispiel:
            PHP-Code:
            // hi, my name is app.js
            'use strict';

            const 
            app = require('express')();

            app.get('/app.js', (reqres) => {
                
            res.sendFile(__dirname '/app.js');
            });

            app.listen(8080); 
            Ein solches (grob fahrlässiges) Konstrukt würde bei einem Request an http://localhost:8080/app.js den blanken Inhalt der Datei ausliefern. Für gewöhnlich macht man aber sowas:

            PHP-Code:
            // hi, my name is app.js
            'use strict';

            const 
            express = require('express');
            const 
            app express();

            app.use('/public'express.static(__dirname '/public'));

            app.listen(8080); 
            http://localhost:8080/app.js -> 404
            [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

            Kommentar


            • #7
              Danke lottikarotti, also dürfte die Datei sicher sein, denke ich.
              Das mit express habe ich noch nicht wirklich inne, aber wie gesagt und oben auch zusehen ist, nutzte ich ja kein express lediglich http so das die Webseite via emit mit dem socket-server kommunizieren kann und in der Webseite wird ja auch nicht die app.js sondern die socket.io.js eingebunden wodurch meine app.js eigentlich nur serverseitig läuft.

              Kommentar

              Lädt...
              X