mirror of https://github.com/lukechilds/node.git
Browse Source
Unsanitized paths containing line feed characters can be used for header injection and request splitting so reject them with an exception. There seems to be no reasonable use case for allowing control characters (characters <= 31) while there are several scenarios where they can be used to exploit software bugs so reject control characters altogether. PR-URL: https://github.com/nodejs/node/pull/8923 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Evan Lucas <evanlucas@me.com> Reviewed-By: Fedor Indutny <fedor@indutny.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: not-an-aardvark <not-an-aardvark@users.noreply.github.com>v7.x
Ben Noordhuis
8 years ago
committed by
James M Snell
2 changed files with 15 additions and 11 deletions
@ -1,9 +1,14 @@ |
|||
'use strict'; |
|||
var common = require('../common'); |
|||
var assert = require('assert'); |
|||
var http = require('http'); |
|||
const common = require('../common'); |
|||
const assert = require('assert'); |
|||
const http = require('http'); |
|||
|
|||
assert.throws(function() { |
|||
// Path with spaces in it should throw.
|
|||
http.get({ path: 'bad path' }, common.fail); |
|||
}, /contains unescaped characters/); |
|||
function* bad() { |
|||
for (let i = 0; i <= 32; i += 1) |
|||
yield 'bad' + String.fromCharCode(i) + 'path'; |
|||
} |
|||
|
|||
for (const path of bad()) { |
|||
assert.throws(() => http.get({ path }, common.fail), |
|||
/contains unescaped characters/); |
|||
} |
|||
|
Loading…
Reference in new issue