Skip to content

Commit

Permalink
fix: strip directory traversal sequences from asset paths
Browse files Browse the repository at this point in the history
  • Loading branch information
NGPixel committed Oct 3, 2020
1 parent 9ccd1f8 commit 084dcd6
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions server/helpers/page.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ const path = require('path')

const localeSegmentRegex = /^[A-Z]{2}(-[A-Z]{2})?$/i
const localeFolderRegex = /^([a-z]{2}(?:-[a-z]{2})?\/)?(.*)/i
// eslint-disable-next-line no-control-regex
const unsafeCharsRegex = /[\x00-\x1f\x80-\x9f\\"|<>:*?]/

const contentToExt = {
markdown: 'md',
Expand All @@ -30,10 +32,14 @@ module.exports = {
// Clean Path
rawPath = _.trim(qs.unescape(rawPath))
if (_.startsWith(rawPath, '/')) { rawPath = rawPath.substring(1) }
rawPath = rawPath.replace(unsafeCharsRegex, '')
if (rawPath === '') { rawPath = 'home' }

// Extract Info
let pathParts = _.filter(_.split(rawPath, '/'), p => !_.isEmpty(p))
let pathParts = _.filter(_.split(rawPath, '/'), p => {
p = _.trim(p)
return !_.isEmpty(p) && p !== '..' && p !== '.'
})
if (pathParts[0].length === 1) {
pathParts.shift()
}
Expand Down Expand Up @@ -73,7 +79,7 @@ module.exports = {
['date', page.updatedAt],
['tags', page.tags ? page.tags.map(t => t.tag).join(', ') : ''],
['editor', page.editorKey],
['dateCreated', page.createdAt],
['dateCreated', page.createdAt]
]
switch (page.contentType) {
case 'markdown':
Expand Down

0 comments on commit 084dcd6

Please sign in to comment.