Avoid module loading using a variable

One Paragraph Explainer

Avoid requiring/importing another file with a path that was given as parameter due to the concern that it could have originated from user input. This rule can be extended for accessing files in general (i.e. fs.readFile()) or other sensitive resources with dynamic variables originating from user input.

Code example

  1. // insecure, as helperPath variable may have been modified by user input
  2. const badWayToRequireUploadHelpers = require(helperPath);
  3. // secure
  4. const uploadHelpers = require('./helpers/upload');