国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

第25天:安全開(kāi)發(fā)-PHP應(yīng)用&文件管理&包含&寫(xiě)入&刪除&下載&上傳&遍歷&安全

這篇具有很好參考價(jià)值的文章主要介紹了第25天:安全開(kāi)發(fā)-PHP應(yīng)用&文件管理&包含&寫(xiě)入&刪除&下載&上傳&遍歷&安全。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

第二十五天

第25天:安全開(kāi)發(fā)-PHP應(yīng)用&文件管理&包含&寫(xiě)入&刪除&下載&上傳&遍歷&安全,小迪安全V2023,安全,php,開(kāi)發(fā)語(yǔ)言,web安全,網(wǎng)絡(luò)安全,自動(dòng)化,運(yùn)維

一、PHP文件管理-下載&刪除功能實(shí)現(xiàn)

1.文件上傳:

  1. 無(wú)過(guò)濾機(jī)制
  2. 黑名單過(guò)濾機(jī)制
  3. 白名單過(guò)濾機(jī)制
  4. 文件類型過(guò)濾機(jī)制

2.文件刪除:

  1. unlink() 文件刪除函數(shù)
  2. 調(diào)用命令刪除:system shell_exec exec等

3. 文件下載:

修改HTTP頭實(shí)現(xiàn)文件讀取解析下載:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-861485.html

header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename="");
header("Content-Length: " . filesize($file));
readfile($file);

二、PHP文件管理-編輯&包含功能實(shí)現(xiàn)

1.文件包含:

include() 在錯(cuò)誤發(fā)生后腳本繼續(xù)執(zhí)行
require() 在錯(cuò)誤發(fā)生后腳本停止執(zhí)行
include_once() 如果已經(jīng)包含,則不再執(zhí)行
require_once() 如果已經(jīng)包含,則不再執(zhí)行

2.架構(gòu):

  1. 上傳至服務(wù)器本身的存儲(chǔ)磁盤(源碼在一起)
  2. 云產(chǎn)品OSS存儲(chǔ)對(duì)象去存儲(chǔ)文件(泄漏安全)
  3. 把文件上傳到其他域名,如:www.xiaodi8.com->upload.xiaodi8.com
$_FILES:PHP中一個(gè)預(yù)定義的超全局變量,用于在上傳文件時(shí)從客戶端接收文件,并將其保存到服務(wù)器上。它是一個(gè)包含上傳文件信息的數(shù)組,包括文件名、類型、大小、臨時(shí)文件名等信息。
$_FILES["表單值"]["name"] 獲取上傳文件原始名稱
$_FILES["表單值"]["type"] 獲取上傳文件MIME類型
$_FILES["表單值"]["size"] 獲取上傳文件字節(jié)單位大小
$_FILES["表單值"]["tmp_name"] 獲取上傳的臨時(shí)副本文件名
$_FILES["表單值"]["error"] 獲取上傳時(shí)發(fā)生的錯(cuò)誤代碼
move_uploaded_file() 將上傳的文件移動(dòng)到指定位置的函數(shù)

3.文件顯示:

  1. 打開(kāi)目錄讀取文件列表
  2. 遞歸循環(huán)讀取文件列表
  3. 判斷是文件還是文件夾
  4. PHP.INI目錄訪問(wèn)控制
is_dir() 函數(shù)用于檢查指定的路徑是否是一個(gè)目錄
opendir() 函數(shù)用于打開(kāi)指定的目錄,返回句柄,用來(lái)讀取目錄中的文件和子目錄
readdir() 函數(shù)用于從打開(kāi)的目錄句柄中讀取目錄中的文件和子目錄
open_basedir:PHP.INI中的設(shè)置用來(lái)控制腳本程序訪問(wèn)目錄
ini_set('open_basedir',__DIR__); 設(shè)置配置文件中,只能訪問(wèn)本目錄

4.文件編輯:

  1. file_get_contents() 讀取文件內(nèi)容
  2. fopen() fread() 文件打開(kāi)讀入

5.安全問(wèn)題

  1. 打開(kāi)upload.js文件可能會(huì)泄露accessid和accesskey,如果有這兩個(gè)東西,就可以使用OSS瀏覽器進(jìn)行訪問(wèn)
  2. 兩個(gè)漏洞核心第一是可以控制的值,二是使用了什么函數(shù)去調(diào)用這個(gè)值。使用了包含文件的函數(shù)就是包含文件漏洞,使用了文件上傳的函數(shù)就是文件上傳漏洞,以此類推
  3. 如果命令無(wú)回顯,可以使用帶外回顯的方式來(lái)確認(rèn)命令是否執(zhí)行成功。例:del 1.txt || ping 127.0.0.1

三、環(huán)境復(fù)現(xiàn)

1.文件顯示

<?php
// 獲取路徑參數(shù),如果未提供則默認(rèn)為當(dāng)前目錄
$path = $_GET['path'] ?? './';

// 定義獲取文件列表的函數(shù)
function getlist($path) {
    // 打開(kāi)目錄句柄
    $hd = opendir($path);

    // 初始化文件列表數(shù)組
    $list = array();

    // 循環(huán)讀取目錄中的文件名
    while (($file_name = readdir($hd)) !== false) {
        // 排除當(dāng)前目錄和父目錄
        if ($file_name != '.' && $file_name != '..') {
            // 構(gòu)建文件完整路徑
            $file_path = "$path/$file_name";

            // 獲取文件類型
            $file_type = filetype($file_path);

            // 輸出文件類型
            echo $file_type;

            // 將文件信息存入列表數(shù)組
            $list[$file_type][] = array(
                'file_name' => $file_name,          // 文件名存儲(chǔ)鍵值
                'file_path' => $file_path,          // 文件路徑存儲(chǔ)鍵值
                'file_size' => round(filesize($file_path) / 1024),  // 通過(guò)換算文件大小存儲(chǔ)鍵值
                'file_time' => date('Y/m/d H:i:s', filemtime($file_path)) // 獲取文件時(shí)間并存儲(chǔ)鍵值
            ); // Ending bracket for array declaration
        } // Ending bracket for if statement
    } // Ending bracket for while loop

    // 關(guān)閉目錄句柄
    closedir($hd);

    // 返回文件列表數(shù)組
    return $list;
}

// 調(diào)用函數(shù)獲取文件列表
$list = getlist($path);
?>
<?php if (isset($list['dir']) && is_array($list['dir'])): ?>
<?php foreach ($list['dir'] as $v): ?>
    <!-- 開(kāi)始循環(huán)輸出文件夾目錄行 -->
    <tr>
        <td><img src="./img/list.png" width="20" height="20"></td>
        <!-- 顯示目錄圖標(biāo) -->
        <td><?php echo $v['file_name']?></td>
        <!-- 輸出文件夾名 -->
        <td><?php echo $v['file_time']?></td>
        <!-- 輸出文件夾修改時(shí)間 -->
        <td>-</td>
        <!-- 占位符,因?yàn)槟夸洓](méi)有文件大小 -->
        <td><?php echo $v['file_path']?></td>
        <!-- 輸出文件夾路徑 -->
        <td><a href="?path=<?php echo $v['file_path']?>">打開(kāi)</a></td>
        <!-- 在表格中創(chuàng)建“打開(kāi)”鏈接,鏈接到目錄的路徑 -->
    </tr>
    <!-- 結(jié)束循環(huán)輸出目錄行 -->
<?php endforeach;?>
<?php endif; ?>

<?php if (isset($list['file']) && is_array($list['file'])): ?>
<?php foreach ($list['file'] as $v): ?>
    <!-- 開(kāi)始循環(huán)輸出文件行 -->
    <tr>
        <td><img src="./img/file.png" width="20" height="20"></td>
        <!-- 顯示文件圖標(biāo) -->
        <td><?php echo $v['file_name']?></td>
        <!-- 輸出文件名 -->
        <td><?php echo $v['file_time']?></td>
        <!-- 輸出文件修改時(shí)間 -->
        <td><?php echo $v['file_size']?> KB</td>
        <!-- 輸出文件大小 -->
        <td><?php echo $v['file_path']?></td>
        <!-- 輸出文件路徑 -->
        <td>
            <a href="?a=edit&path=<?php echo $v['file_path']?>">編輯</a>
            <!-- 創(chuàng)建編輯鏈接 -->
            <a href="?a=down&path=<?php echo $v['file_path']?>">下載</a>
            <!-- 創(chuàng)建下載鏈接 -->
            <a href="?a=del&path=<?php echo $v['file_path']?>">刪除</a>
            <!-- 創(chuàng)建刪除鏈接 -->
        </td>
    </tr>
    <!-- 結(jié)束循環(huán)輸出文件行 -->
<?php endforeach; ?>
<?php endif; ?>

2.文件下載

<?php
// 接受方法 判斷是怎么操作
switch ($action){
    case 'del':
        unlink($file);
        // 如果操作為刪除,則調(diào)用unlink函數(shù)刪除指定文件
        break;
    case 'down':
        header("Content-Type: application/octet-stream");
        // 設(shè)置響應(yīng)內(nèi)容的類型為二進(jìn)制流,告知瀏覽器這是一個(gè)文件下載
        header("Content-Disposition: attachment; filename=\"" . $file . "\"");
        // 設(shè)置瀏覽器提示下載,并指定下載文件的名稱(使用 $file 變量)
        header("Content-Length: " . filesize($file));
        // 設(shè)置響應(yīng)內(nèi)容的長(zhǎng)度為文件大小,告知瀏覽器文件的實(shí)際大小
        readfile($file);
        // 讀取并輸出文件內(nèi)容,將文件內(nèi)容發(fā)送給瀏覽器
        break;
}
?>

到了這里,關(guān)于第25天:安全開(kāi)發(fā)-PHP應(yīng)用&文件管理&包含&寫(xiě)入&刪除&下載&上傳&遍歷&安全的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • STM32F429 Discovery開(kāi)發(fā)板應(yīng)用:實(shí)現(xiàn)SPI-SD Card文件寫(xiě)入(搭載FatFS文件系統(tǒng))

    STM32F429 Discovery開(kāi)發(fā)板應(yīng)用:實(shí)現(xiàn)SPI-SD Card文件寫(xiě)入(搭載FatFS文件系統(tǒng))

    MCU:STM32F429ZIT6 開(kāi)發(fā)環(huán)境:STM32CubeMX+MDK5 ? 外購(gòu)了一個(gè)SPI接口的SD Card模塊,想要實(shí)現(xiàn)SD卡存儲(chǔ)數(shù)據(jù)的功能。 首先需要打開(kāi)STM32CubeMX工具。輸入開(kāi)發(fā)板MCU對(duì)應(yīng)型號(hào),找到開(kāi)發(fā)板對(duì)應(yīng)封裝的MCU型號(hào),雙擊打開(kāi)(圖中第三)。 ? 此時(shí),雙擊完后會(huì)關(guān)閉此界面,然后打開(kāi)一個(gè)新界面。

    2024年02月08日
    瀏覽(27)
  • PHP包含讀文件寫(xiě)文件

    PHP包含讀文件寫(xiě)文件

    php://filter/read=convert.base64-encode/是編碼 http://192.168.246.11/DVWA/vulnerabilities/fi/?page=php://filter/read=convert.base64-encode/resource=x.php ?php @eval($_POST[\\\'chopper\\\']);? 利用包含漏洞所在點(diǎn),進(jìn)行讀文件,bp抓包后能看到文件的內(nèi)容 將抓包讀取到的文件內(nèi)容解密 執(zhí)行netuser命令在bp抓包里面寫(xiě),構(gòu)造一

    2024年02月07日
    瀏覽(21)
  • php://input文件包含

    php://input文件包含

    通過(guò)本實(shí)驗(yàn),了解php封裝偽協(xié)議,掌握php://input文件包含的用法 操作機(jī):kali 靶機(jī):Windows 實(shí)驗(yàn)地址:http://靶機(jī)ip/exp/include2/input/input2/ 工具:burpsuite 用戶名:college 密碼:360College php內(nèi)置又很多內(nèi)置URL風(fēng)格的封裝為協(xié)議,利用這些偽協(xié)議可以命令執(zhí)行等操作。 登錄“data和fil

    2024年02月13日
    瀏覽(12)
  • Python 文件處理指南:打開(kāi)、讀取、寫(xiě)入、追加、創(chuàng)建和刪除文件

    文件處理是任何Web應(yīng)用程序的重要部分。Python有多個(gè)用于創(chuàng)建、讀取、更新和刪除文件的函數(shù)。 在Python中處理文件的關(guān)鍵函數(shù)是open()函數(shù)。open()函數(shù)接受兩個(gè)參數(shù):文件名和模式。 有四種不同的方法(模式)可以打開(kāi)文件: \\\"r\\\" - 讀取 - 默認(rèn)值。打開(kāi)一個(gè)文件以進(jìn)行讀取,如

    2024年02月05日
    瀏覽(17)
  • Java 文件處理完全指南:創(chuàng)建、讀取、寫(xiě)入和刪除文件詳細(xì)解析

    文件處理是任何應(yīng)用程序的重要部分。Java 提供了許多用于創(chuàng)建、讀取、更新和刪除文件的方法。 Java 文件處理 Java 中的文件處理主要通過(guò) java.io 包中的 File 類完成。該類允許我們處理文件,包括創(chuàng)建、讀取、寫(xiě)入和刪除文件。 要使用 File 類,我們首先需要?jiǎng)?chuàng)建該類的對(duì)象,

    2024年03月18日
    瀏覽(22)
  • 基于php應(yīng)用的文件管理器eXtplorer部署網(wǎng)站并內(nèi)網(wǎng)穿透遠(yuǎn)程訪問(wèn)

    基于php應(yīng)用的文件管理器eXtplorer部署網(wǎng)站并內(nèi)網(wǎng)穿透遠(yuǎn)程訪問(wèn)

    通過(guò)互聯(lián)網(wǎng)傳輸文件,是互聯(lián)網(wǎng)最重要的應(yīng)用之一,無(wú)論是網(wǎng)上觀看的視頻、圖片、小說(shuō),甚至協(xié)同辦公和商業(yè)文件傳遞,都是這項(xiàng)應(yīng)用的延伸。而之前火熱一時(shí)的云存儲(chǔ)概念,就數(shù)據(jù)存儲(chǔ)服務(wù)器加互聯(lián)網(wǎng)傳輸形成的。不過(guò),云存儲(chǔ)接連爆出事故,讓公有云存儲(chǔ)服務(wù)備受質(zhì)疑

    2024年02月02日
    瀏覽(40)
  • 第27天:安全開(kāi)發(fā)-PHP應(yīng)用&TP框架&路由訪問(wèn)&對(duì)象操作&內(nèi)置過(guò)濾繞過(guò)&核心漏洞

    第27天:安全開(kāi)發(fā)-PHP應(yīng)用&TP框架&路由訪問(wèn)&對(duì)象操作&內(nèi)置過(guò)濾繞過(guò)&核心漏洞

    1.TP框架-開(kāi)發(fā)-配置架構(gòu)路由MVC模型 參考:https://www.kancloud.cn/manual/thinkphp5_1 配置架構(gòu)-導(dǎo)入使用 路由訪問(wèn)-URL訪問(wèn) 數(shù)據(jù)庫(kù)操作-應(yīng)用對(duì)象 文件上傳操作-應(yīng)用對(duì)象 前端頁(yè)面渲染-MVC模型 1.TP框架-安全-不安全寫(xiě)法版本過(guò)濾繞過(guò) 1.內(nèi)置代碼寫(xiě)法 不合要求的代碼寫(xiě)法-ThinkPHP5-自寫(xiě) 2.框架

    2024年04月25日
    瀏覽(30)
  • php內(nèi)置函數(shù)-文件包含的函數(shù)

    php內(nèi)置函數(shù)-文件包含的函數(shù)

    目錄 1.include 2.require? 3.include_once 4.?require_once 可以將別的文件直接引用過(guò)來(lái)(被引用的文件含有打印代碼的話,會(huì)直接打?。绻×?,會(huì)返回一條警告,文件會(huì)繼續(xù)執(zhí)行下去,通常用于動(dòng)態(tài)包含。 如下,我建兩個(gè) php 文件,一個(gè)寫(xiě)有函數(shù)聲明的文件,一個(gè)函數(shù)調(diào)用的文

    2024年01月15日
    瀏覽(15)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包