Web开发-PHP应用&文件操作安全&上传下载&任意读取删除&目录遍历&文件包含

知识点:

1、安全开发-原生PHP-文件安全操作

2、安全开发-原生PHP-上传读取删除包含等

3、安全开发-原生PHP-代码审计文件安全

一、演示案例-WEB开发-文件安全-上传下载读取

文件上传

bash 复制代码
$_FILES:PHP中一个预定义的超全局变量,用于在上传文件时从客户端接收文件,并将其保存到服务器上。它是一个包含上传文件信息的数组,包括文件名、类型、大小、临时文件名等信息。
$_FILES["表单值"]["name"] 获取上传文件原始名称
$_FILES["表单值"]["type"] 获取上传文件MIME类型
$_FILES["表单值"]["size"] 获取上传文件字节单位大小
$_FILES["表单值"]["tmp_name"] 获取上传的临时副本文件名
$_FILES["表单值"]["error"] 获取上传时发生的错误代码
move_uploaded_file() 将上传的文件移动到指定位置的函数

文件下载

bash 复制代码
修改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开发-文件安全-删除遍历包含

文件删除

bash 复制代码
unlink() 文件删除函数
调用命令删除:system shell_exec exec等

文件显示(目录遍历)

bash 复制代码
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


相关推荐
4SAPI11 小时前
多国产模型混合调度与企业级治理生产选型指南:4SAPI、硅基流动与 OpenRouter 的架构权衡
大数据·人工智能·架构·php
tommyjiatong14 小时前
资安底座连环雷:从 PHP2Shell 到 Node2Shell
node.js·php
青峰讲运维15 小时前
OpenStack Heat 编排:用模板一键交付云业务,告别手动点页面
开发语言·php·openstack
协作者15 小时前
PHP根本影响不到Domino
php·oidc·domino·notes·inotes·verse
神仙别闹15 小时前
基于Python+MySQL实现(Web)个人博客系统
python·mysql·php
dingzd9516 小时前
TikTok账号登录态失效的Cookie字段排查路径
开发语言·php·跨境电商·营销策略
vipxieliang17 小时前
Laravel 框架内核:请求生命周期、IoC 容器与中间件管道(附 ThinkPHP 选型对比)
php
忆~遂愿17 小时前
极空间部署XiaoMusic:把NAS里的本地音乐接入小爱音箱,搜索、播放和远程控制一起完成
php
ESDWAN18 小时前
SD-WAN 是什么?工作原理、适用场景与选型要点
开发语言·网络·数据库·架构·php
李纲明18 小时前
WordPress 报 Allowed memory size exhausted:先抓堆栈找吃内存的插件,再改 memory_limit
性能优化·php·内存·插件·wordpress·devdiy