文件上传漏洞php相关函数

1.file_exists(path)

检查文件或目录是否存在。

参数 描述
path 必需。规定要检查的路径。

如果指定的文件或目录存在则返回 TRUE,否则返回 FALSE

2.move_uploaded_file(file,newloc)

把上传的文件移动到新位置。

如果成功该函数返回 TRUE,如果失败则返回 FALSE。

参数 描述
file 必需。规定要移动的文件。
newloc 必需。规定文件的新位置。

3.在服务端对数据包的MIME进行检查

$_FILES['upload_file']['type'] == 'image/jpeg‘

4.trim(string,charlist)

移除字符串两侧的空白字符或其他预定义字符。

参数 描述
string 必需。规定要检查的字符串。
charlist 可选。规定从字符串中删除哪些字符。如果省略该参数,则移除下列所有字符: "\0" - NULL "\t" - 制表符 "\n" - 换行 "\x0B" - 垂直制表符 "\r" - 回车 " " - 空格

5.deldot(s)

为upload-lab中一个常见的函数,它实际为一个自定义函数,定义于common.php中

参数 描述
s 必需。规定要操作的字符串。

函数定义如下:

function deldot($s){
    for($i = strlen($s)-1;$i>0;$i--){
        $c = substr($s,$i,1);
        if($i == strlen($s)-1 and $c != '.'){
            return $s;
        }
​
        if($c != '.'){
            return substr($s,0,$i+1);
        }
    }
}

即从字符串的尾部开始,从后向前删除点.,直到该字符串的末尾字符不是.为止。

6.strrchr(string,char)

查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。

参数 描述
string 必需。规定被搜索的字符串。
char 必需。规定要查找的字符。如果该参数是数字,则搜索匹配数字 ASCII 值的字符。

7.strtolower(string)

把字符串转换为小写。

参数 描述
string 必需。规定要转换的字符串。

8.str_ireplace(find,replace,string,count)

替换字符串中的一些字符(不区分大小写)。

参数 描述
find 必需。规定要查找的值。
replace 必需。规定替换 find 中的值的值。
string 必需。规定被搜索的字符串。
count 可选。一个变量,对替换数进行计数。

9.in_array(value,array,type)

搜索数组中是否存在指定的值。

参数 描述
value 必需。规定要在数组搜索的值。
array 必需。规定要搜索的数组。
type 可选。如果该参数设置为 TRUE,则检查搜索的数据与数组的值的类型是否相同。

  1. rand(min,max) 生成随机整数。

参数 描述
min 可选。规定返回的最小数。默认是 0。
max 可选。规定返回的最大数。默认是 getrandmax()。

11.strrpos(string,find,start) 查找字符串在另一字符串中最后一次出现的位置(区分大小写)。

参数 描述
string 必需。规定被搜索的字符串。
find 必需。规定要查找的字符。
start 可选。规定开始搜索的位置。

返回字符串在另一字符串中最后一次出现的位置,如果没有找到字符串则返回 FALSE。字符串位置从 0 开始,不是从 1 开始。

12.fopen(filename,mode,include_path,context)打开一个文件或 URL。

如果 fopen() 失败,它将返回 FALSE 并附带错误信息。您可以通过在函数名前面添加一个 '@' 来隐藏错误输出。

filename 必需。规定要打开的文件或 URL。
mode 必需。规定您请求到该文件/流的访问类型。可能的值: "r" (只读方式打开,将文件指针指向文件头) "r+" (读写方式打开,将文件指针指向文件头) "w" (写入方式打开,清除文件内容,如果文件不存在则尝试创建之) "w+" (读写方式打开,清除文件内容,如果文件不存在则尝试创建之) "a" (写入方式打开,将文件指针指向文件末尾进行写入,如果文件不存在则尝试创建之) "a+" (读写方式打开,通过将文件指针指向文件末尾进行写入来保存文件内容) "x" (创建一个新的文件并以写入方式打开,如果文件已存在则返回 FALSE 和一个错误) "x+" (创建一个新的文件并以读写方式打开,如果文件已存在则返回 FALSE 和一个错误)
include_path 可选。如果您还想在 include_path(在 php.ini 中)中搜索文件的话,请设置该参数为 '1'。
context 可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。

13.string fread ( resource $handle , int $length )读取打开的文件。

函数会在到达指定长度或读到文件末尾(EOF)时(以先到者为准),停止运行。

该函数返回读取的字符串,如果失败则返回 FALSE。

参数 描述
handle 文件系统指针,是典型地由 fopen() 创建的 resource(资源)。
length 必需。规定要读取的最大字节数。

14.fclose(file)函数关闭打开的文件。

该函数如果成功则返回 TRUE,如果失败则返回 FALSE。

参数 描述
file 必需。规定要关闭的文件。

15.unpack(format,data)函数从二进制字符串对数据进行解包。

参数 描述
format 必需。规定在解包数据时所使用的格式。 可能的值: a - NUL 填充的字符串 A - SPACE 填充的字符串 h - 十六进制字符串,低位在前 H - 十六进制字符串,高位在前 c - signed char C - unsigned char s - signed short(总是16位, machine 字节顺序) S - unsigned short(总是16位, machine 字节顺序) n - unsigned short(总是16位, big endian 字节顺序) v - unsigned short(总是16位, little endian 字节顺序) i - signed integer(取决于 machine 的大小和字节顺序) I - unsigned integer(取决于 machine 的大小和字节顺序) l - signed long(总是32位, machine 字节顺序) L - unsigned long(总是32位, machine 字节顺序) N - unsigned long(总是32位, big endian 字节顺序) V - unsigned long(总是32位, little endian 字节顺序) f - float(取决于 machine 的大小和表示) d - double(取决于 machine 的大小和表示) x - NUL 字节 X - 备份一个字节 Z - NUL 填充的字符串 @ - NUL 填充绝对位置
data 必需。规定被解包的二进制数据。

如果成功则返回数组,如果失败则返回 FALSE。

16.int intval ( mixed $var [, int $base = 10 ] )

intval() 函数用于获取变量的整数值。

intval() 函数通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。 intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1。

参数说明:

  • $var:要转换成 integer 的数量值。

  • $base:转化所使用的进制。

如果 base 是 0,通过检测 var 的格式来决定使用的进制:

  • 如果字符串包括了 "0x" (或 "0X") 的前缀,使用 16 进制 (hex);否则,

  • 如果字符串以 "0" 开始,使用 8 进制(octal);否则,

  • 将使用 10 进制 (decimal)

17.getimagesize() 函数用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息。

getimagesize() 函数将测定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 图像文件的大小并返回图像的尺寸以及文件类型及图片高度与宽度。

18.image_type_to_extension — 根据指定的图像类型返回对应的后缀名。

 image_type_to_extension(IMAGETYPE_PNG)

根据给定的常量 IMAGETYPE_XXX 返回后缀名。

18.stripos(string,find,start)函数查找字符串在另一字符串中第一次出现的位置(不区分大小写)。

参数 描述
string 必需。规定被搜索的字符串。
find 必需。规定要查找的字符。
start 可选。规定开始搜索的位置。

返回字符串在另一字符串中第一次出现的位置,如果没有找到字符串则返回 FALSE。注释:字符串位置从 0 开始,不是从 1 开始。

19.int exif_imagetype( string $filename )

该函数接受单个参数$filename,该参数保存图像的名称或URL

返回值:此函数返回与IMAGETYPE常量之一相对应的整数,如下所示:

  • IMAGETYPE_GIF(1)

  • IMAGETYPE_JPEG(2)

  • IMAGETYPE_PNG(3)

  • IMAGETYPE_SWF(4)

  • IMAGETYPE_PSD(5)

  • IMAGETYPE_BMP(6)

  • IMAGETYPE_TIFF_II(7)

  • IMAGETYPE_TIFF_MM(8)

  • IMAGETYPE_JPC(9)

  • IMAGETYPE_JP2(10)

  • IMAGETYPE_JPX(11)

  • IMAGETYPE_JB2(12)

  • IMAGETYPE_SWC(13)

  • IMAGETYPE_IFF(14)

  • IMAGETYPE_WBMP(15)

  • IMAGETYPE_XBM(16)

  • IMAGETYPE_ICO(17)

  • IMAGETYPE_WEBP(18)

20.basename(path,suffix)函数返回路径中的文件名部分。

参数 描述
path 必需。规定要检查的路径。
suffix 可选。规定文件扩展名。如果文件有名有文件扩展名,将不会显示这个扩展名。

21.resource imagecreatefromjpeg( string $filename )

参数:该函数接受单个参数$filename,该参数保存图像的名称。返回值:成功时此函数返回图像资源标识符,错误时返回FALSE

22.unlink(filename,context)函数删除文件。

如果成功,该函数返回 TRUE。如果失败,则返回 FALSE。

参数 描述
filename 必需。规定要删除的文件。
context 可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。

23.string strval ( mixed $var )函数用于获取变量的字符串值

参数说明:

  • $var: 可以是任何标量类型,但不能是数组或对象。

24.bool imagejpeg( resource $image, int $to, int $quality )

参数:此函数接受上述和以下所述的三个参数:

  • $image:它指定要处理的图像资源。

  • $to (Optional):它指定将文件保存到的路径。

  • $quality (Optional):它指定图像的质量。

返回值:如果成功,此函数将返回TRUE,否则将返回FALSE。

第三个参数很重要,它决定了你重新生成的图片质量及大小。imagejpeg和imagegif,这个参数的范围是1-100,默认是100,数值越大,图片质量越高;imagepng是1-9

25.isUploadedFile()

如果文件尚未上载到web服务器上的/tmp,它将返回错误代码

26.pathinfo(path,options)返回的数组元素如下:

  • [dirname]  目录路径 

  • [basename]  文件名 

  • [extension]  文件后缀名 

  • [filename]  不包含后缀的文件名 

参数 描述
path 必需。规定要检查的路径。
options 可选。规定要返回的数组元素。默认是 all。可能的值: PATHINFO_DIRNAME - 只返回 dirname PATHINFO_BASENAME - 只返回 basename PATHINFO_EXTENSION - 只返回 extension PATHINFO_FILENAME - 只返回 filename

如果不是请求所有的元素,则 pathinfo() 函数返回字符串。

27.explode(separator,string,limit)函数使用一个字符串分割另一个字符串,并返回由字符串组成的数组。

参数 描述
separator 必需。规定在哪里分割字符串。
string 必需。要分割的字符串。
limit 可选。规定所返回的数组元素的数目。可能的值: 大于 0 - 返回包含最多 limit 个元素的数组 小于 0 - 返回包含除了最后的 -limit 个元素以外的所有元素的数组 0 - 会被当做 1, 返回包含一个元素的数组

28.reset() 函数将内部指针指向数组中的第一个元素,并输出。

你可能感兴趣的:(php,web安全)