'use strict'; /** * File Inclusion */ function pathFilter(path) { if (typeof path !== 'string') return path; const pathSource = path; while (path.indexOf('%') !== -1) { try { path = decodeURIComponent(path); } catch (e) { if (process.env.NODE_ENV !== 'production') { // Not a PROD env, logging with a warning. this.ctx.coreLogger.warn('[egg-security:helper:spath] : decode file path %s failed.', path); } break; } } if (path.indexOf('..') !== -1 || path[0] === '/') { return null; } return pathSource; } module.exports = pathFilter;