知識點:
1、安全開發-原生PHP-文件安全操作
2、安全開發-原生PHP-上傳讀取刪除包含等
3、安全開發-原生PHP-代碼審計文件安全
一、演示案例-WEB開發-文件安全-上傳下載讀取
文件上傳
$_FILES:PHP中一個預定義的超全局變量,用于在上傳文件時從客戶端接收文件,并將其保存到服務器上。它是一個包含上傳文件信息的數組,包括文件名、類型、大小、臨時文件名等信息。
$_FILES["表單值"]["name"] 獲取上傳文件原始名稱
$_FILES["表單值"]["type"] 獲取上傳文件MIME類型
$_FILES["表單值"]["size"] 獲取上傳文件字節單位大小
$_FILES["表單值"]["tmp_name"] 獲取上傳的臨時副本文件名
$_FILES["表單值"]["error"] 獲取上傳時發生的錯誤代碼
move_uploaded_file() 將上傳的文件移動到指定位置的函數
文件下載
修改HTTP頭實現文件讀取解析下載:
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"" . $file . "\"");
header("Content-Length: " . filesize($file));
readfile($file);
文件讀取
1、file_get_contents() 讀取文件內容
2、fopen()、fread() 文件打開讀入
二、演示案例-WEB開發-文件安全-刪除遍歷包含
文件刪除
unlink() 文件刪除函數
調用命令刪除:system shell_exec exec等
文件顯示(目錄遍歷)
1.打開目錄讀取文件列表
2.遞歸循環讀取文件列表
3.判斷是文件還是文件夾
4.PHP.INI目錄訪問控制
is_dir() 函數用于檢查指定的路徑是否是一個目錄
opendir() 函數用于打開指定的目錄,返回句柄,用來讀取目錄的文件和子目錄
readdir() 函數用于從打開的目錄句柄中讀取目錄中的文件和子目錄
open_basedir:PHP.INI中的設置用來控制腳本程序訪問目錄
scandir() 函數返回指定目錄中的文件和目錄列表,以數組形式返回
ini_set(‘open_basedir’,DIR); 設置配置文件中,只能訪問本目錄
文件包含
include
require
include_once
require_once
三、演示案例-WEB開發-文件安全-代碼審計案例
1、Rrzcms-遍歷讀取
https://xz.aliyun.com/t/10932
黑盒角度
白盒角度
2、Metinfo-文件下載
https://mp.weixin.qq.com/s/te4RG0yl_truE5oZzna3Eg
3、Xhcms-文件包含
https://xz.aliyun.com/t/11310