根据允许的规则集验证文件名和路径。

原型

validate_file( string $file, array $allowed_files = array() )

描述

返回值1表示文件路径包含目录遍历。

参数

$file (string) (Required) 文件路径。

$allowed_files (array) (Optional)  允许的文件列表。

返回值

(int)  0表示没有错,大于0表示出错。

源文件

路径:wp-includes/functions.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
...
function validate_file( $file, $allowed_files = array() ) {
	// `../` on its own is not allowed:
	if ( '../' === $file ) {
		return 1;
	}

	// More than one occurence of `../` is not allowed:
	if ( preg_match_all( '#\.\./#', $file, $matches, PREG_SET_ORDER ) && ( count( $matches ) > 1 ) ) {
		return 1;
	}

	// `../` which does not occur at the end of the path is not allowed:
	if ( false !== strpos( $file, '../' ) && '../' !== mb_substr( $file, -3, 3 ) ) {
		return 1;
	}

	// Files not in the allowed file list are not allowed:
	if ( ! empty( $allowed_files ) && ! in_array( $file, $allowed_files ) )
		return 3;

	// Absolute Windows drive paths are not allowed:
	if (':' == substr( $file, 1, 1 ) )
		return 2;

	return 0;
}

...
?>

其他

英文文档:https://developer.wordpress.org/reference/functions/validate_file/