There are many security issues that arise from not sanitizing a variable
before using it in an include (eg `include $script;`).

The filter extension is intended to prevent this kind of security issues. A
validation filter would make it easier and could be the defacto standard
when using variable includes.

When a static code analyzer is used, it can check if the filter has been
used and the variable is safe to be used in include.

The options could be "base_path, allowed_streams".

The base_path option defines the path where the file should be in. Dots
like `..` are resolved. Home paths, like `~/foo` and `~arnold/` are not
allowed (or resolved). Symlinks are not considered.

The `allowed_streams` option would set which streams are allowed. By
default none. I feel this is a better option than relying on
'allow_url_include' or RFC: Precise URL include control (
https://wiki.php.net/rfc/allow_url_include).

    include filter_var($script, FILTER_VALIDATE_INCLUDE, ["base_path" =>
"path/to/project/", "allowed_streams" => ["phar", "zip"]]);

What do you think?

Also, does this require an RFC or should I just create a PR?

- Arnold

Reply via email to