include::../description.adoc[] == Noncompliant Code Example ---- const fs = require('fs'); function (req, res) { const reqPath = __dirname + req.query.filename; // user-controlled path let data = fs.readFileSync(reqPath, { encoding: 'utf8', flag: 'r' }); // Noncompliant } ---- == Compliant Solution ---- const fs = require('fs'); const pathmodule = require('path'); function (req, res) { const reqPath = __dirname + req.query.filename; // user-controlled path const resolvedPath = pathmodule.resolve(reqPath); // resolve will resolve "../" if (resolvedPath.startsWith(__dirname + '/uploads')) { // the requested filename cannot be retrieved outside of the "/uploads" folder let data = fs.readFileSync(resolvedPath, { encoding: 'utf8', flag: 'r' }); // Compliant } } ---- include::../see.adoc[] ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) include::../message.adoc[] ''' == Comments And Links (visible only on this page) include::../comments-and-links.adoc[] endif::env-github,rspecator-view[]