第24天:安全开发-PHP应用&文件管理模块&显示上传&黑白名单类型过滤&访问控制

这篇具有很好参考价值的文章主要介绍了第24天:安全开发-PHP应用&文件管理模块&显示上传&黑白名单类型过滤&访问控制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第二十四天

第24天:安全开发-PHP应用&文件管理模块&显示上传&黑白名单类型过滤&访问控制,小迪安全V2023,安全,php,android,网络安全,web安全,小程序,javascript

一、PHP文件管理-显示&上传功能实现

  • 如果被抓包抓到数据包,并修改Content-Type内容 则也可以绕过筛查 正常进行上传和下载

二、文件上传-$_FILES&过滤机制实现

  1. 无过滤机制

  2. 黑名单过滤机制

  • 使用 explode 函数通过点号分割文件名,获取文件后缀
  • 使用 end 函数获取数组中的最后一个元素,即文件后缀
  • 检查文件后缀是否在黑名单中
    • 如果文件后缀在黑名单中,输出非法后缀文件信息
    • 如果文件后缀不在黑名单中,移动上传的文件到指定目录
    • 输出上传成功的提示信息
  1. 白名单过滤机制
  • 基本和黑名单一样简单修改即可
  • 只能上传白名单相符的后缀
  1. 文件类型过滤机制
  • 如果是图片在抓包内容Content-Type: image/png
  • 如果是exe文件抓包内容Content-Type: application/x-msdownload
$_FILES:PHP中一个预定义的超全局变量,用于在上传文件时从客户端接收文件,并将其保存到服务器上。它是一个包含上传文件信息的数组,包括文件名、类型、大小、临时文件名等信息。
$_FILES["表单值"]["name"] 获取上传文件原始名称
$_FILES["表单值"]["type"] 获取上传文件MIME类型
$_FILES["表单值"]["size"] 获取上传文件字节单位大小
$_FILES["表单值"]["tmp_name"] 获取上传的临时副本文件名
$_FILES["表单值"]["error"] 获取上传时发生的错误代码
move_uploaded_file() 将上传的文件移动到指定位置的函数

三、文件显示-目录遍历&过滤机制实现

1.功能:显示 上传 下载 删除 编辑 包含等

  1. 打开目录读取文件列表

  2. 递归循环读取文件列表

  3. 判断是文件还是文件夹

  4. PHP.INI目录访问控制

is_dir() 函数用于检查指定的路径是否是一个目录
opendir() 函数用于打开指定的目录,返回句柄,用来读取目录中的文件和子目录
readdir() 函数用于从打开的目录句柄中读取目录中的文件和子目录
open_basedir:PHP.INI中的设置用来控制脚本程序访问目录

1.opendir() 函数

  • opendir() 用于打开一个目录句柄(directory handle)。
  • 接受一个参数,即要打开的目录的路径。
  • 返回一个目录句柄,该句柄可以用于后续对目录的操作。
  • 通常与 closedir() 配合使用,用于关闭目录句柄。

示例:文章来源地址https://www.toymoban.com/news/detail-861537.html

phpCopy code
$dir_handle = opendir('/path/to/directory');

2.readdir() 函数

  • readdir() 用于读取目录句柄中的条目。
  • 接受一个参数,即之前使用 opendir() 打开的目录句柄。
  • 在每次调用时,返回目录中的下一个文件或目录的名称。
  • 当没有更多的文件或目录时,返回 false

示例:

phpCopy code
$file = readdir($dir_handle);

四.环境复现

1.上传功能

1.页面代码
<form action="upload.php" method="POST" enctype="multipart/form-data">
    <!-- 用于标识上传文件的标签 -->
    <label for="file">选择文件:</label>
    <br>
    <!-- 文件输入框,允许用户选择要上传的文件 -->
    <input type="file" id="file" name="f">
    <br>
    <!-- 提交按钮,触发文件上传操作 -->
    <button type="submit">上传文件</button>
</form>
2.后端源码
<?php

// 从上传文件数组中获取文件名
$name = $_FILES['f']['name'];
// 从上传文件数组中获取文件类型
$type = $_FILES['f']['type'];
// 从上传文件数组中获取文件大小
$size = $_FILES['f']['size'];
// 从上传文件数组中获取临时文件名
$tmp_name = $_FILES['f']['tmp_name'];
// 从上传文件数组中获取错误码
$error = $_FILES['f']['error'];

// 输出文件名
echo $name . "<br>";
// 输出文件类型
echo $type . "<br>";
// 输出文件大小
echo $size . "<br>";
// 输出临时文件名
echo $tmp_name . "<br>";
// 输出错误码
echo $error . "<br>";

// 如果成功将临时文件移动到指定目录,则输出文件上传成功
if (move_uploaded_file($tmp_name, 'upload/' . $name)) {
    echo "文件上传成功!";
}
?>

2.黑名单过滤机制

1.实现源码
// 上传文件后缀过滤,使用黑名单机制
$black_ext = array('php', 'asp', 'jsp', 'aspx');
// 使用 explode 函数通过点号分割文件名,获取文件后缀
$fenge = explode('.', $name);
// 使用 end 函数获取数组中的最后一个元素,即文件后缀
$exts = end($fenge);
// 检查文件后缀是否在黑名单中
if (in_array($exts, $black_ext)) {
    // 如果文件后缀在黑名单中,输出非法后缀文件信息
    echo '非法后缀文件' . $exts;
} else {
    // 如果文件后缀不在黑名单中,移动上传的文件到指定目录
    move_uploaded_file($tmp_name, 'upload/' . $name);
    // 输出上传成功的提示信息
    echo "<script>alert('上传成功!')</script>";
}
?>

3.白名单过滤机制

1.实现源码
//白名单过滤机制
**// 允许上传的文件后缀白名单
$allow_ext = array('png', 'jpg', 'gif', 'jpeg');**
// 使用 explode 函数通过点号分割文件名,获取文件后缀
$fenge = explode('.', $name);
// 使用 end 函数获取数组中的最后一个元素,即文件后缀
$exts = end($fenge);
// 检查文件后缀是否在允许的白名单中
**if (!in_array($exts, $allow_ext)) {
    // 如果文件后缀不在白名单中,输出非法后缀文件信息
    echo '非法后缀文件' . $exts;**
} else {
    // 如果文件后缀在白名单中,移动上传的文件到指定目录
    move_uploaded_file($tmp_name, 'upload/' . $name);
    // 输出上传成功的提示信息
    echo "<script>alert('上传成功!')</script>";
}

4.文件过滤机制

1.实现源码
//MIME文件类型过滤
**// 允许上传的文件 MIME 类型白名单
$allow_type = array('image/png', 'image/jpg', 'image/jpeg', 'image/gif');**
// 检查文件 MIME 类型是否在允许的白名单中
if (!in_array($type, $allow_type)) {
    // 如果文件 MIME 类型不在白名单中,输出非法文件类型信息
    echo '非法文件类型';
} else {
    // 如果文件 MIME 类型在白名单中,移动上传的文件到指定目录
    move_uploaded_file($tmp_name, 'upload/' . $name);
    // 输出上传成功的提示信息
    echo '<script>alert("上传成功")</script>';
}

到了这里,关于第24天:安全开发-PHP应用&文件管理模块&显示上传&黑白名单类型过滤&访问控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PHP文件上传中fileinfo出现的安全问题

    fileinfo的函数通过在文件的给定位置查找特定的魔术字节序列 来猜测文件的内容类型以及编码,也就是说我们可以获得上传文件的MIME信息 在windows中我们可以在php.ini中开启 在linux中开启fileinfo 在打开fileinfo后我们就可以使用fileinfo扩展了 那fileinfo包括哪些呢 像如图红圈中的那

    2024年02月06日
    浏览(17)
  • 24 WEB漏洞-文件上传之WAF绕过及安全修复_阿里云盾waf绕过怎么修复

    目录 WAF绕过 上传参数名解析:明确哪些东西能修改? 常见绕过方法: `符号变异-防匹配(’ \\\" ;)` 数据截断-防匹配(%00 ; 换行) 重复数据-防匹配(参数多次) 搜索引擎搜索fuzz web字典 文件上传安全修复方案 WAF绕过 safedog BT(宝塔) XXX云盾 宝塔过滤的比安全狗厉害一些,在真实情况下现

    2024年02月20日
    浏览(16)
  • web安全-文件上传漏洞-图片马制作-相关php函数讲解-upload靶场通关详细教学(3)

    制作图片马有两种方法,一种是文本方式打开,末尾粘贴一句话木马,令一种是使用命令进行合成。 方法1 首先准备好一个图片(这里是1.png)。 将一个图片以文本格式打开(这里用的Notepad++,以记事本方式打开修改也能连接成功,不过修改后图片无法正常显示了)。 后面粘

    2024年02月06日
    浏览(22)
  • 2.php开发-个人博客项目&文件操作类&编辑器&上传下载删除读写

    ​ ​ ​ 文件上传类: form表单上传文件 --文件上传,--php接收,处理 action ---提交给谁处理 move函数移到文件 ---文件上传漏洞啊!!! ——ueditor 实现编辑器的加载 上传文件的方法: 用了编辑器,就要用编辑器去验证了(编辑器没漏洞,那就没漏洞——他有问题就有问题,

    2024年01月21日
    浏览(18)
  • [网络安全] Windows Server 设置文件屏蔽防止黑客利用漏洞上传特定类型的非法文件(.asp .aspx .jsp .php)

    [网络安全] Windows Server 设置文件屏蔽防止黑客利用文件上传漏洞上传特定类型的非法文件(.asp .aspx .jsp .php) 我在负责网站运维期间,遇到过一次黑客利用公司网站内使用的开源文件上传工具漏洞上传非法文件(可执行脚本) 我是通过设置文件屏蔽来防止此类事件的再次发生。

    2024年02月12日
    浏览(15)
  • Java应用中文件上传安全性分析与安全实践

    ✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨  🎈🎈作者主页: 喔的嘛呀🎈🎈 目录 引言 一. 文件上传的风险 二. 使用合适的框架和库 1. Spring框架的MultipartFile 2. Apache Commons FileUpload 3. Apache Commons IO 三. 文件上传路径的安全设置

    2024年04月25日
    浏览(12)
  • wx.chooseMessageFile小程序文件上传,小程序开发工具上可正常使用,手机上上传显示无内容

    wx.chooseMessageFile 小程序文件上传时,小程序开发工具上可正常使用,手机上上传显示无内容 在手机上小程序是没有直接上传文件这个功能的,只能在微信聊天记录里面选; type 值是 file 时是选不到图片视频的,但是小程序开发工具上可以,真机上选不到 小程序官方文档 修改

    2024年02月11日
    浏览(10)
  • 亿赛通电子文档安全管理系统任意文件上传漏洞复现

        亿赛通电子文档安全管理系统(简称:CDG)是一款电子文档安全加密软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资产,对电子文档进行全生命周期防护,系统具有透明加密、主动加密、智

    2024年02月12日
    浏览(12)
  • 亿赛通电子文档安全管理系统任意文件上传漏洞(2023-HW)

    免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 ​ 亿赛通电子文档安全管理系统(简称:

    2024年02月12日
    浏览(13)
  • 24、文件上传漏洞——Apache文件解析漏洞

      Apache文件解析漏洞与用户配置有密切关系。严格来说,属于用户配置问题,这里使用ubantu的docker来复现漏洞: CGI:共同网关接口,是HTTP服务器与机器上其他程序进行通信的一个接口,让web服务器必要时启动额外的程序处理动态内容。 FastCGI:CGI解释器的更快实现,可以提

    2024年02月04日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包