2017-07-10 3 views
0

In node.js habe ich eine Website, die Seiten vom selben Server bedient. Seiten können mit http get mit ajax Dateien auf demselben Server anfordern. Einige Seiten dürfen jedoch keine Datei von einem bestimmten Pfad anfordern. Wie kann ich dies in node.js validieren?Wie URL einer Seite erhalten, die eine HTTP AJAX GET Anfrage in node.js macht?

Auch dies sollte in einer Weise sein, die ein Benutzer nicht von der Client-Seite hacken kann. Die node.js benötigt einen Weg, um zu sehen, ob die Anfrage von einer Seite von einer bestimmten URL kam und wenn ja, dann blockiert sie, wenn die angefragte Verbindung in einem spezifizierten Ordner ist.

Dank

+0

Sie können nicht zuverlässig sagen, aus welcher Seite eine Anfrage stammt. Sie können sich den Referrer-Header anschauen, aber das kann leicht gefälscht werden. Wenn ein Benutzer in einen Zustand versetzt wird, in dem nur bestimmte Dinge erlaubt sind, sollten Sie die Benutzerauthentifizierung und den Serverseitenstatus verwenden, um zu bestimmen, auf welche Seiten ein bestimmter Benutzer jederzeit zugreifen darf. Sie sollten nicht über "Seiten Anfragen" nachdenken. Sie sollten über authentifizierte Benutzer nachdenken, die Anfragen stellen. – jfriend00

+0

Die Seite befindet sich jedoch in einem sandboxed iframe. Kann ich einfach den Ursprung des iframe setzen und das in node.js überprüfen? – omega

+0

Bearbeiten Sie Ihre Frage, um zu beschreiben, worum es eigentlich geht. Progressive Entdeckung der tatsächlichen Frage macht Menschen nicht wollen Zeit verbringen versuchen, herauszufinden, was Ihre Frage tatsächlich ist. Wie ich bereits sagte, gibt es KEINE zuverlässige Möglichkeit (die nicht manipuliert werden kann), um zu sagen, aus welcher Seite eine Anfrage kommt. Sie können sich den Referrer-Header ansehen, aber Sie können ihm nicht vertrauen. Sie müssen überdenken, was Sie tun, damit Anforderungen von authentifizierten Benutzern stammen, und Sie können diese Authentifizierungsinformationen auf dem Server verwenden, um zu entscheiden, auf was sie zugreifen können. – jfriend00

Antwort

1

Sie haben Setup des Servers wie so Angenommen:

var http = require('http'); 
server = http.createServer(function(req, res) 
{ 
    ... 

können Sie die Bezug URL erhalten, indem req.headers.referer

Dann Zugriff Sie diese müssen entweder überprüfen mit einem regulären Ausdruck (wenn die erlaubten URLs mit einem Muster übereinstimmen) oder mit einem Array von akzeptablen Werten.

UPDATE
Als nächstes könnten Sie eine Reihe von gültig besuchen URLs in einer Sitzung halten und dann prüfen, ob die zulässige Referrer-URL tatsächlich in dieser Liste enthalten ist (und somit nicht notwendigerweise gefälscht).

+0

Der Referrer kann auf der Client-Seite gehackt werden – omega

0

In jeder Knotenfunktion haben wir Zugriff auf Anfrage- und Antwortobjekt. Berücksichtigen Sie z. B .:

var express = require('express'); 
var router = express.Router(); 
var app = express(); 

app.get('/', function(request, response){ 
     var urlPath = request.path; 
     response.send("Hello"); 
}); 

app.listen(3000); 
Verwandte Themen