2、文件上傳漏洞的防范

原文地址:文件上傳漏洞的防范?更多內容請關注:代碼安全

PHP安全編碼——書寫安全的代碼

文件上傳漏洞的防范

提問

? ? 問題1:上傳漏洞是怎么產生的?
? ? 問題2:是否可以只用js判斷文件類型而php不判斷?
? ? 問題3:為什么必須用move_uploaded_file?

課程單元

? ? 一個簡單的文件上傳例子
? ? 文件上傳漏洞是怎么產生的
? ? 如何避免文件上傳漏洞

1. 一個簡單的文件上傳例子

? ? 這是一個簡單的上傳文件的html代碼。

圖片

? ? 這是一個簡單的上傳文件的php代碼。

圖片

2. 文件上傳漏洞是怎么產生的

? ? 上面的文件上傳的例子,沒有對被上傳的文件進行任何判斷,這樣用戶可以上傳一個.php文件,然后通過瀏覽器訪問該php文件,來達到攻擊的目的。

3. 如何避免文件上傳漏洞

? ? 1、js判斷允許上傳的文件類型
? ? 2、php判斷允許上傳的文件類型
? ? 3、使用move_uploaded_file
? ? 4、web服務器增加配置

3.1.JS判斷上傳的文件類型

? ? 在客戶端提交文件上傳之前,判斷只允許上傳指定類型的文件。

圖片

3.2. php判斷上傳的文件類型

? ? 在文件上傳后,判斷上傳的文件類型,如果類型不對,則不執行上傳操作。

圖片

3.3. 使用move_uploaded_file

? ? bool move_uploaded_file ( string $filename , string $destination )
? ? 本函數檢查并確保由 filename 指定的文件是合法的上傳文件(即通過 PHP 的 HTTP POST 上傳機制所上傳的)。如果文件合法,則將其移動為由 destination 指定的文件。
? ? 在執行文件上傳操作時,都必須用這個函數來移動上傳的臨時文件到正式目錄下,而不能自己使用move方法來移動。

3.4. web服務器增加配置

? ? 可以在web服務器中,配置保存上載的目錄不能執行php文件,這樣萬一js或者php判斷都不嚴謹,也不會出現問題。
? ? apache服務器配置不能執行php文件:

圖片

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/76391.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/76391.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/76391.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

06軟件測試需求分析案例-添加用戶

給職業顧問部的老師添加用戶密碼后,他們才能登錄使用該軟件。只有admin賬戶具有添加用戶、修改用戶信息、刪除用戶的權利。admin是經理或團隊的第一個人的賬號,后面招一個教師就添加一個賬號。 通讀需求是提取信息,提出問題,輸出…

Ex-Human:在DigitalOcean云平臺之上,構建下一代 AI 數字人

Ex-Human 正在通過創造極具吸引力和富有同理心的人工智能角色,重新定義人們與人工智能的互動方式。該公司由 Artem Rodichev 創立,讓用戶能夠通過文本、圖像、視頻和音頻創建能互動的獨一無二的數字人物。憑借每月超過一百萬的活躍用戶和五百萬個定制創建…

從零實現HTTP服務器

響應: 第一部分測試代碼,讀取請求 Makefile binhttpserver #生成的可執行程序 ccg #編譯器名稱 LD_FLAGS-stdc11 -lpthread #-DDEBUG1 #鏈接選項 srcmain.cc$(bin):$(src)$(cc) -o $ $^ $(LD_FLAGS).PHONY:clean clean:rm -f $(bin) 1111111 main.cc…

構建高可靠C++服務框架:從日志系統到任務調度器的完整實現

構建高可靠C服務框架:從日志系統到任務調度器的完整實現 一、深度解析示例代碼技術體系 1.1 日志系統的進階應用 示例代碼中的ZRY_LOG_XXX宏展示了基礎日志功能,但在生產環境中我們需要更完善的日志系統: 推薦技術棧組合: sp…

小張的工廠進化史——工廠模式

小張的工廠進化史——工廠模式 一、簡單工廠模式:全能生產線二、工廠方法模式:分品牌代工三、抽象工廠模式:生態產品族四、三種模式核心對比表五、結合Spring實現簡單工廠(實踐) 小張從華強北起家,最初只有…

Python中的eval()函數詳解

文章目錄 Python中的eval()函數詳解基本語法基本用法安全性問題安全使用建議實際應用場景與exec()的區別性能考慮總結 Python中的eval()函數詳解 eval()是Python的一個內置函數,用于執行字符串形式的Python表達式并返回結果。它是一個強大但需要謹慎使用的函數。 …

銀行業務發展歷史

銀行業務發展歷史 銀行業務的發展可以追溯到古代,但其現代形式的發展可以追溯到中世紀。以下是銀行業務發展的主要歷史階段: 1. 古代和中世紀時期 特點:商人提供貸款和存款服務,充當中間人轉移資金,發行紙幣作為支付…

SQL實戰篇,數據庫在Kooboo中的實際應用(一)

本文將結合實際操作與代碼示例,展示SQL 在 Kooboo 中的實際應用 僅需兩步:動態創建表 基礎查詢,無需復雜配置,快速上手! 一、動態創建表:插入數據 Kooboo 支持多種數據庫,以 SQLite 為例&…

克魔助手(Kemob)安裝與注冊完整教程 - Windows/macOS雙平臺指南

iOS設備管理工具克魔助手便攜版使用全指南 前言:為什么需要專業的iOS管理工具 在iOS開發和設備管理過程中,開發者經常需要突破系統限制,實現更深層次的控制和調試。本文將詳細介紹一款實用的便攜式工具的使用方法,幫助開發者快速…

搜索插入位置 -- 二分查找

目錄 一&#xff1a;題目 二:算法原理 三&#xff1a;代碼分析 一&#xff1a;題目 題目鏈接&#xff1a;35. 搜索插入位置 - 力扣&#xff08;LeetCode&#xff09; 二:算法原理 三&#xff1a;代碼分析 class Solution { public:int searchInsert(vector<int>&am…

Apache Doris內存與超時參數配置詳解

一、查詢任務內存限制調整 1. ?默認內存限制與問題定位 Apache Doris默認限制單個BE節點上的查詢任務內存使用不超過2GB&#xff08;即exec_mem_limit2147483648字節&#xff09;。當復雜查詢或大規模數據操作超過此限制時&#xff0c;會觸發Memory limit exceeded錯誤。通過…

龍虎榜——20250411

今天縮量&#xff0c;上方壓力依然在&#xff0c;外圍還在升級&#xff0c;企穩還需要時日。 2025年4月11日龍虎榜行業方向分析 一、核心主線方向 半導體與芯片&#xff08;國產替代加速&#xff09; ? 代表標的&#xff1a;圣邦股份&#xff08;模擬芯片&#xff09;、中電…

若依前后端分離版本從mysql切換到postgresql數據庫

一、修改依賴&#xff1a; 修改admin模塊pom.xml中的依賴,屏蔽或刪除mysql依賴&#xff0c;增加postgresql依賴。 <!-- Mysql驅動包 --> <!--<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId> &l…

自定義排序注意點

這段 Java 代碼展示了兩種排序方式的用法&#xff0c;分別是&#xff1a; 對普通數組進行排序&#xff08;Integer[] nums&#xff09;對對象數組進行排序&#xff08;Student[] students&#xff09; 我來一步步給你講清楚&#xff1a; ? 第1部分&#xff1a;普通數組降序排…

第十四屆藍橋杯大賽軟件賽省賽C/C++ 大學 A 組真題

文章目錄 1 幸運數題目描述&#xff1a;答案&#xff1a;4430091 代碼&#xff1a; 2 有獎問答題目描述&#xff1a;重點&#xff1a;答案&#xff1a;8335366 代碼&#xff1a; 3 平方差題目描述&#xff1a;思路&#xff1a;數學找規律代碼&#xff1a; 4 更小的數題目描述&a…

C++ 入門四:類與對象 —— 面向對象編程的核心基石

一、類的定義 1. 類的基本形式 class 類名 { public: // 公有成員&#xff08;類內外均可訪問&#xff09;數據類型 數據成員; // 公有數據成員數據類型 成員函數(參數列表); // 公有成員函數聲明 protected: // 保護成員&#xff08;類內和派生類可訪問&…

嵌入式---電機分類

一、按電流類型分類&#xff08;最基礎分類&#xff09; 1. 直流電機&#xff08;DC Motor&#xff09; 工作原理&#xff1a;通過換向器&#xff08;有刷&#xff09;或電子換向&#xff08;無刷&#xff09;將直流電源轉換為交變磁場&#xff0c;驅動轉子旋轉。 核心特點&a…

【python】并行編程模塊:threading / mutliprocess / parallel / Celery

在并行編程中&#xff0c;Python 具有簡化實現的內置和外部模塊。 本書是基于Python3.X的。 Python的threading模塊 Python的threading模塊為模塊 _thread 提供了一個抽象層&#xff0c;它是一個較低級別的模塊。 它提供的功能可以幫助程序員完成基于線程開發并行系統的艱巨任…

OpengGL教程(七)---攝像機

本章參考官方教程&#xff1a;攝像機 本系列歷史文 OpengGL教程(一)—OpenGL環境的配置(GLFW3,GLAD) OpengGL教程(二)—渲染一個簡單的窗體 OpengGL教程(三)—使用VAO和VBO方式繪制三角形 OpengGL教程(四)—使用EBO方式繪制矩形 OpengGL教程(五)—紋理的應用 OpengGL教程(六)—…

安卓手機怎樣開啟雙WiFi加速

1. 小米/Redmi手機 路徑&#xff1a; 設置 → WLAN → 高級設置 → 雙WLAN加速 操作&#xff1a; 開啟功能后&#xff0c;可同時連接一個2.4GHz WiFi和一個5GHz WiFi&#xff08;或兩個不同路由器&#xff09;。 可選擇“智能選擇”或手動指定輔助網絡。 2. 華為/榮耀手機…