escape HTML on redirects
This commit is contained in:
parent
e1e4d86941
commit
0d90255745
|
@ -40,19 +40,21 @@ module.exports.create = function (securePort, insecurePort, redirects) {
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var escapeHtml = require('escapeHtml');
|
||||||
var newLocation = 'https://'
|
var newLocation = 'https://'
|
||||||
+ host.replace(/:\d+/, ':' + securePort) + url
|
+ host.replace(/:\d+/, ':' + securePort) + url
|
||||||
;
|
;
|
||||||
|
var safeLocation = escapeHtml(newLocation);
|
||||||
|
|
||||||
var metaRedirect = ''
|
var metaRedirect = ''
|
||||||
+ '<html>\n'
|
+ '<html>\n'
|
||||||
+ '<head>\n'
|
+ '<head>\n'
|
||||||
+ ' <style>* { background-color: white; color: white; text-decoration: none; }</style>\n'
|
+ ' <style>* { background-color: white; color: white; text-decoration: none; }</style>\n'
|
||||||
+ ' <META http-equiv="refresh" content="0;URL=' + newLocation + '">\n'
|
+ ' <META http-equiv="refresh" content="0;URL=' + safeLocation + '">\n'
|
||||||
+ '</head>\n'
|
+ '</head>\n'
|
||||||
+ '<body style="display: none;">\n'
|
+ '<body style="display: none;">\n'
|
||||||
+ ' <p>You requested an insecure resource. Please use this instead: \n'
|
+ ' <p>You requested an insecure resource. Please use this instead: \n'
|
||||||
+ ' <a href="' + newLocation + '">' + newLocation + '</a></p>\n'
|
+ ' <a href="' + safeLocation + '">' + safeLocation + '</a></p>\n'
|
||||||
+ '</body>\n'
|
+ '</body>\n'
|
||||||
+ '</html>\n'
|
+ '</html>\n'
|
||||||
;
|
;
|
||||||
|
@ -72,7 +74,7 @@ module.exports.create = function (securePort, insecurePort, redirects) {
|
||||||
// To minimize this, we give browser users a mostly optimal experience,
|
// To minimize this, we give browser users a mostly optimal experience,
|
||||||
// but people experimenting with the API get a message letting them know
|
// but people experimenting with the API get a message letting them know
|
||||||
// that they're doing it wrong and thus forces them to ensure they encrypt.
|
// that they're doing it wrong and thus forces them to ensure they encrypt.
|
||||||
res.setHeader('Content-Type', 'text/html');
|
res.setHeader('Content-Type', 'text/html; charset=utf-8');
|
||||||
res.end(metaRedirect);
|
res.end(metaRedirect);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -62,7 +62,7 @@
|
||||||
"ee-first": "^1.1.0",
|
"ee-first": "^1.1.0",
|
||||||
"errorhandler": "1.x",
|
"errorhandler": "1.x",
|
||||||
"es6-promise": "2.x",
|
"es6-promise": "2.x",
|
||||||
"escape-html": "^1.0.1",
|
"escape-html": "^1.0.2",
|
||||||
"escape-string-regexp": "1.x",
|
"escape-string-regexp": "1.x",
|
||||||
"etag": "^1.5.1",
|
"etag": "^1.5.1",
|
||||||
"express": "4.x",
|
"express": "4.x",
|
||||||
|
|
Loading…
Reference in New Issue