小迪安全-24天-文件管理,显示上传,黑白名单,访问控制

news/2025/2/25 10:55:55

上节课回顾,token问题

没有更新token值,造成了复用

加上这段代码就好了,就不会复用了

文件管理-文件上传

upload.html文件,找ai生成就行

uoload.php接受文件上传的信息

这里在写个临时文件存储换个地方

因为上面临时文件存在c盘的目录,换到别的盘要绝对路径,不如就报错

黑名单

如果上传的文件后主在黑名单里面就不让上传

但是这个不安全,例如我上次php3,绕过黑名单了,上传.shtaseess文件,包含png文件,也是成功利用了

白名单

跟黑名单相反一下就行,单安全系数更高

mime类型验证

这个不安全,改一下mime信息就绕过了,不如白名单检测后缀

文件管理-显示

文件显示

这里可以显示了,但是没办法在进一步读取文件夹

加一个超链接,自动把文件夹名字赋值给path

这时候会有任意文件读取的危险,但是php.ini有安全机制,可以防御这种失去

这时候就只能看到www目录,在网上就看不到了

在网上就直接报错看不到了

或者在代码里面过滤../这种关键字

还有设置用户的权限,不给web用户权限看某目录

uoload.php

<?php
$name = $_FILES['file']['name'];
$type = $_FILES['file']['type'];
$size = $_FILES['file']['size'];
$tmp_name = $_FILES['file']['tmp_name'];
$error = $_FILES['file']['error'];

//echo $name."<br>";
//echo $type."<br>";
//echo $size."<br>";
//echo $tmp_name."<br>";
//echo $error."<br>";

//if(move_uploaded_file($tmp_name, 'D:\phpStudy\PHPTutorial\WWW\upload\img/'.$name)){
//    echo "上传成功";
//}

//黑名单
/*
$black_ext=array('php','php4','php5','phtml');
$fenge=explode('.',$name);//以逗号分隔获取末尾
$exts=end($fenge);//数组需要用end输出
if(in_array($exts,$black_ext)){
    echo '非法文件'.$exts;
}else{
    if(move_uploaded_file($tmp_name, 'D:\phpStudy\PHPTutorial\WWW\upload\img/'.$name)){
        echo "上传成功";
    }
}
*/

//白名单
$allow_ext=array('png','jpg','jpeg','gif');
$fenge=explode('.',$name);//以逗号分隔获取末尾
$exts=end($fenge);//数组需要用end输出
if(in_array($exts,$allow_ext)){
    if(move_uploaded_file($tmp_name, 'D:\phpStudy\PHPTutorial\WWW\upload\img/'.$name)){
        echo "上传成功";
    }
}else{
    echo '非法文件'.$exts;
}

file-manage.php

<?php
$dir=$_GET['path'] ?? './';

function show_file($dir){
    if(@$d=opendir($dir)){//打开目录,返回句柄
        echo $d;
        while(($file=readdir($d))!==false){//readdir读取句柄中的文件和子目录
            if(is_dir($file)){//is_dir检测是否是目录
                echo '文件夹'."<a href='?path=$file'>$file</a>".'<br>';
            }else{
                echo '文件'.$file.'<br>';
            }
        }
    }

}

show_file($dir);

jian

kang

ping

an


http://www.niftyadmin.cn/n/5865412.html

相关文章

EasyExcel 使用指南:基础操作与常见问题

文章目录 1. EasyExcel 简介2. 基础操作2.1. 写入 Excel &#x1f525;2.2. 读取 Excel ✅2.3. 使用模板 &#x1f3a8; 3. 常见问题与解决方案3.1. 处理日期格式 &#x1f4c5;3.2. 数据写入失败&#xff1a;占位符无法匹配 ❌3.3. 内存溢出&#xff1a;大数据量处理 ⚡3.4. 空…

抗干扰利器,光纤无人机技术详解

光纤无人机技术是将光纤通信技术与无人机技术相结合的创新技术&#xff0c;其在抗干扰方面展现出了显著的优势。以下是对光纤无人机技术的详细解析&#xff1a; 一、技术基础与原理 光纤无人机技术主要通过光纤作为高速、低延迟的数据传输媒介&#xff0c;实现无人机拍摄的高…

解锁健康密码,拥抱养生生活

在快节奏的现代生活中&#xff0c;人们愈发重视健康养生&#xff0c;追求身心的和谐与平衡。养生并非高深莫测的学问&#xff0c;而是融入日常生活的点滴智慧&#xff0c;从饮食、运动到心态&#xff0c;每一个选择都在为健康加分。 饮食是养生的基石。遵循 “五谷为养&#xf…

深入理解 CSS pointer-events: none:穿透点击的魔法

一、什么是 pointer-events: none&#xff1f; pointer-events: none 是一个强大的 CSS 属性&#xff0c;它控制元素是否响应鼠标/触摸事件&#xff08;如点击、悬停、拖拽&#xff09;。当设置为 none 时&#xff0c;元素会变得“透明”&#xff0c;事件会直接穿透到下方的元…

使用 Element Plus 的 `el-pagination` 组件与 Vue 3 实现分页功能

文章目录 前言1. 环境准备2. 使用 el-pagination 组件3. 代码解析4. 进一步优化5. 总结 前言 在现代 Web 开发中&#xff0c;分页功能是处理大量数据的常见需求。Element Plus 是一个基于 Vue 3 的 UI 组件库&#xff0c;提供了丰富的组件来简化开发流程。其中&#xff0c;el-…

网络安全产品

安全产品与特点概览 文章目录 安全产品与特点概览**1. 边界防护类****2. 网络优化与管控类****3. 终端与数据安全类****4. 高级威胁防御类****5. 云与新兴安全类****6. 安全运营闭环** 特点 1. 边界防护类 防火墙设备 核心功能&#xff1a;网络区域逻辑隔离、VPN加密通信、访…

Django数据库操作

1、ORM 创建、删除、修改数据库的表中的数据&#xff0c;但不能创建数据库往数据库表中写入数据 表名&#xff1a;app名称_类名的小写 2、操作表数据 from django.db import modelsclass Department(models.Model):title models.CharField(verbose_name"部门", …

【Java项目】基于Spring Boot的简历系统

【Java项目】基于Spring Boot的简历系统 技术简介&#xff1a;采用Spring Boot框架、Java技术、MySQL数据库等实现。 系统简介&#xff1a;系统主要实现了管理员模块、用户模块二大部分。管理员登录进入简历系统可以查看首页、个人中心、用户管理、简历模板管理、模板类型管理、…