contains-path-traversal
Version:
🚶 Does this string contain path traversal?
21 lines • 610 B
JavaScript
// src/index.ts
var MAX_DECODE_ROUNDS = 4;
function containsPathTraversal(pathname, { maxIterations } = {
maxIterations: MAX_DECODE_ROUNDS
}) {
return recursiveDecode(pathname, 0, maxIterations).split("/").includes("..");
}
function recursiveDecode(string, iteration, maxIterations) {
if (iteration >= maxIterations) return string;
try {
const decoded = decodeURIComponent(string);
if (decoded === string) return string;
return recursiveDecode(decoded, iteration + 1, maxIterations);
} catch {
return string;
}
}
export {
containsPathTraversal
};
//# sourceMappingURL=index.js.map