ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
373
373
EMPFEHLEN
-
Guten Morgen,
Ich möchte einen kleinen Chat Service anbieten.
Dazu haben ich einen NodeJs Server geschrieben
welcher die Nachrichten an die richtigen Personen weiterleitet.
Der Webseitenbetreiber hat die Möglichkeit 'Channel' anzulegen.
Auf der Webseite muss ein Javascript eingebunden werden
das ein Objekt bereitstellt:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
function myChat() { var host = window.location.host; var devId = null; ... this.init = function(did) { if(!devId) devId = did; }; this.sendMessage = function(channelName,msg) { send(channelName,msg,host,devId); }; }
Jetz prüfe ich auf der Serverseite ob der bei send() angegebene Channel
auch dem Webseitenbetreiber mit User ID devId gehört und ob
die beim Channel erstellen angegebene Webseiten URL
gleich dem Host window.location.host ist.
(myChat.init() soll bei window.onload ausgeführt werden.)
Ist das der Fall geht die Message durch und wird an alle Clients im selben
Channel verschickt.
Damit möchte ich unterbinden das man sich von fremden Seiten
in den Chat einklinken und mitlesen kann.
Jetzt frage ich mich ob das so überhaupt sicher ist.
Ich habe mal aufgegriffen, dass Variablen in einem Objekt, wenn sie das Muster var x = x;
haben, nicht von ausserhalb des Objektes geändert werden können.
Stimmt das ?
Man kann ja auch eigene Script per Adresszeile ausführen und
ich bin mir da nicht sicher ob das eine gute Lösung für mein Problem ist.
Gibt es eine andere/bessere/sichere Lösung?
Gibt es überhaupt eine sichere Lösung?
Ich habe die Befürchtung das man die variablen host und devId
so ändern kann das man auch von fremden Seiten aus
schreiben und lesen kann.
Warum eine Passwortabfrage nicht möglich ist, ist denk ich klar -
man könnte das Passwort aus dem Javascript entnehmen.
Ich danke schonmal im Vorraus für Vor- und Ratschläge
und wünsche einen guten Morgen.
-
Ohne serverseitigen Code seitens der Betreiber der anderen Webseiten wird das nicht funktionieren. Diese müssten einen geheimen Schlüssel haben, um damit das Skript zu signieren. Wie genau das dann laufen würde, müsste man prüfen.
Hier ein proof of concept, um deinen jetzigen Mechanismus auszuhebeln:
Code javascript:1 2 3 4 5
Object.prototype.__defineGetter__.call(window.location, 'host', function() { return 'www.google.de'; }); console.log(window.location.host);
Geändert von CPoly (27.01.12 um 15:09 Uhr)
-
Wenn du ein kleinen Chat einbinden willst, würde ich das über XMPP realisieren.
Weither geholt ist das so ähnlich wie IRC. Wenn du ein Server hast, kannst du so ein XMPP Server installieren und privatisieren und auch Online nutzen.
Als Server empfehle ich dir den XMPP eJabberd Server. Ich habe eJabberd privat auf einer Linux-Maschine laufen.
Der Chat von Facebook ist mit einen XMPP-Server realisiert.
Mit private meine ich den XMPP Server, damit keiner in meine ChatLobby kann und nicht das ich es lokal laufen habe.Geändert von mOnis (02.02.12 um 17:35 Uhr)
"Programmieren ist wie küssen;
Man kann darüber reden, man kann es beschreiben,
aber man weiß erst, was es bedeutet,
wenn man es getan hat."
Ähnliche Themen
-
Benutzer und Passwort abfrage
Von ryserstephan im Forum PHPAntworten: 6Letzter Beitrag: 22.10.07, 15:39 -
JAAS Benutzer mehrmals Authentifizieren
Von jpatwork im Forum JavaAntworten: 1Letzter Beitrag: 24.08.07, 19:12 -
Benutzer root auf mysql mit Passwort?
Von server im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 31.12.05, 14:01 -
XP Benutzer Passwort herausfinden
Von Home hacker im Forum Microsoft WindowsAntworten: 4Letzter Beitrag: 01.06.05, 19:59 -
Benutzer und Passwort
Von InTocNiCo im Forum PHPAntworten: 2Letzter Beitrag: 11.05.04, 16:31





Zitieren

Login





