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

  • Paykoman
    hat ein Thema erstellt Wie sicher ist die app.js von socket.io ??.

    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

  • Paykoman
    antwortet
    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.

    Einen Kommentar schreiben:


  • lottikarotti
    antwortet
    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

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    Javascript, ie. Clientseite. Ich würde mal sagen, alles was du dahin schickst ist auf dem Client einsehbar.

    Einen Kommentar schreiben:


  • Paykoman
    antwortet
    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

    Einen Kommentar schreiben:


  • Paykoman
    antwortet
    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?

    Einen Kommentar schreiben:


  • lottikarotti
    antwortet
    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?

    Einen Kommentar schreiben:

Lädt...
X