Php 在使用白名单执行包含文件之前对其进行清理

Php 在使用白名单执行包含文件之前对其进行清理,php,include,sanitization,whitelist,Php,Include,Sanitization,Whitelist,是否可以在执行包含之前对其进行消毒,以确保它存在于服务器上 我想避免攻击者使用某种白名单破坏文件路径,这可能吗 我的include如下所示: require_once('../includes/front/header.php'); 使用PHP功能和您的白名单应该是可能的: $allowed_files = array('../includes/front/header.php','../includes/front/footer.php'); $include_file = <stri

是否可以在执行包含之前对其进行消毒,以确保它存在于服务器上

我想避免攻击者使用某种白名单破坏文件路径,这可能吗

我的include如下所示:

require_once('../includes/front/header.php');

使用PHP功能和您的白名单应该是可能的:

$allowed_files = array('../includes/front/header.php','../includes/front/footer.php');
$include_file = <string with file/path>; //EG '../includes/front/header.php'

if (in_array($include_file,$allowed_files && file_exists($include_file)) {
    require_once($include_file);
}
$allowed_files=array(“../includes/front/header.php”,“../includes/front/footer.php”);
$include_file=//例如“../includes/front/header.php”
如果(在数组中($include\u file、$allowed\u files&&file\u存在($include\u file)){
需要一次(包括文件);
}

如果您的路径硬编码到PHP脚本中,并且不接受用户输入的文件名,那么您不需要清理您自己的文件名/路径

应该可以使用PHP的功能和您的白名单:

$allowed_files = array('../includes/front/header.php','../includes/front/footer.php');
$include_file = <string with file/path>; //EG '../includes/front/header.php'

if (in_array($include_file,$allowed_files && file_exists($include_file)) {
    require_once($include_file);
}
$allowed_files=array(“../includes/front/header.php”,“../includes/front/footer.php”);
$include_file=;//例如“../includes/front/header.php”
如果(在数组中($include\u file、$allowed\u files&&file\u存在($include\u file)){
需要一次(包括文件);
}

如果您的路径是硬编码到PHP脚本中的,并且不接受用户输入的文件名,那么您不需要清理自己的文件名/路径

您可以编写自己的include,它可以根据“允许”路径列表进行验证


i、 e.使用上述方法,但将其包装在函数中。

您可以编写自己的include,该include可以根据“允许”路径列表进行验证


i、 e.使用上述内容,但将其包装在函数中。

如何破坏路径?(除非您的
要求\u once
包含用户输入,否则请避免此操作!)

您可以使用
file\u exists
检查文件是否存在:

例如


如果您确实想要一个白名单,您可以只创建一个
数组
允许的路径/文件名,然后只使用数组中的
检查其有效性。

该路径如何被破坏?(除非您的
需要一次
包含用户输入,否则请避免!)

您可以使用
file\u exists
检查文件是否存在:

例如


如果您确实想要一个白名单,您可以创建一个
数组
允许的路径/文件名,然后在数组中使用
来检查它的有效性。

require
的要点是,如果因为需要文件而找不到它,执行就会停止。如果您不想这样做,请使用
iinclude
file\u exists()
is\u file()
结合使用。
require
的要点是,如果因为需要文件而找不到它,执行就会停止。如果不想这样做,只需将
包含
file\u exists()
is\u file()结合使用即可
。好的,那么你说没有必要创建一个白名单,因为没有用户输入?好的,你能告诉我在什么情况下需要一次包含用户输入吗?:sok,那么你说没有必要创建一个白名单,因为没有用户输入吗?好的,你能告诉我在什么情况下需要一次包含用户输入吗?:s