Added http referrer verification to manager.js verifyOrigin + tests for origins setting

This commit is contained in:
einaros
2011-08-16 07:46:57 +02:00
committed by Daniel Shaw
parent dd30de3c5a
commit bb2e100e7f
2 changed files with 97 additions and 7 deletions

View File

@@ -870,7 +870,7 @@ Manager.prototype.handshakeData = function (data) {
*/
Manager.prototype.verifyOrigin = function (request) {
var origin = request.headers.origin
var origin = request.headers.origin || request.headers.referer
, origins = this.get('origins');
if (origin === 'null') origin = '*';
@@ -882,14 +882,19 @@ Manager.prototype.verifyOrigin = function (request) {
if (origin) {
try {
var parts = url.parse(origin);
return
~origins.indexOf(parts.host + ':' + parts.port) ||
~origins.indexOf(parts.host + ':*') ||
var ok =
~origins.indexOf(parts.hostname + ':' + parts.port) ||
~origins.indexOf(parts.hostname + ':*') ||
~origins.indexOf('*:' + parts.port);
} catch (ex) {}
if (!ok) this.log.warn('illegal origin: ' + origin);
return ok;
} catch (ex) {
this.log.warn('error parsing origin');
}
}
else {
this.log.warn('origin missing from handshake, yet required by config');
}
return false;
};