==== Canonical path validation

If it is impossible to use secure-by-design APIs that do this automatically, the universal way to prevent path injection is to validate paths constructed from untrusted data:

1. Ensure the target directory path ends with a forward slash to prevent partial path traversal, for example, `/base/dirmalicious` starts with `/base/dir` but does not start with `/base/dir/`.
2. Resolve the canonical path of the file by using methods like `{canonicalization_function}`. This will resolve relative path or path components like `../` and removes any ambiguity regarding the file's location. 
3. Check that the canonical path is within the directory where the file should be located.

*Important Note*: The order of this process pattern is important. The code must
follow this order exactly to be secure by design:

1. `data = transform(user_input);`
2. `data = normalize(data);`
3. `data = sanitize(data);`
4. `use(data);`

:tnsu_talk: https://www.youtube.com/watch?v=V-DdcKADnFk
As pointed out in {tnsu_talk}[this SonarSource talk], failure to follow this
exact order leads to security vulnerabilities.

