Apache的.htaccess利用技巧

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: Apache的.htaccess利用技巧

本文转载:https://xiaochuhe.blog.csdn.net/article/details/122809398
一、基本概念
.htaccess 文件提供了针对目录改变配置的方法, 即在一个特定的文档目录中放置一个包含 一条或多条指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受 到限制。管理员可以通过 Apache 的 AllowOverride 指令来设置。
注:.htaccess 中有 # 单行注释符, 且支持 \拼接上下两行。
二、作用范围
.htaccess文件配置指令作用于.htaccess文件所在的目录及子目录但是很重要的、需要注意的是,其上级目录也可能会有 .htaccess 文件,而指令是按查找顺序依次生效的,所以一个特定目录下的 .htaccess 文件中的指令可能会覆盖其上级目录中的 .htaccess 文件中的指令,即子目录中的指令会覆盖父目录或者主配置文件中的指令。

.htaccess的基本作用

    URL重写、自定义错误页面
    MIME类型配置
    访问权限控制等
    主要体现在伪静态的应用
    图片防盗链
    自定义404错误页面
    阻止/允许特定IP/IP段
    目录浏览与主页
    禁止访问指定文件类型
    文件密码保护

三、配置文件
启动 .htaccess,需要在服务器的主配置文件将 AllowOverride 设置为 All,如apache2.conf

AllowOverride All #启动.htaccess文件的使用

也可以将 .htaccess 修改为其他名

AccessFileName .config #将.htaccess修改为.config

四、常见指令
.htaccess可以实现301重定向、自定义404错误页面、改变拓展文件名、允许/阻止特定的用户或目录的访问、禁止目录列表、配置默认文档等功能。详细学习: What is .htaccess? - Apache .htaccess Guide, Tutorials & Examples
0x2.1 SetHandler

SetHandler可以强制所有匹配的文件被一个指定的处理器处理

用法:

1


SetHandler handler-name|None

DOM:

1


SetHandler application/x-httpd-php

  此时当前目录及其子目录下所有文件都会被当成php解析

DOM2

1


SetHandler server-status

mod_rewrite机制,即还是在.httpd.conf中查找mod_rewrite.so这个作用是在httpd.conf外重写配置  

apache的服务器状态信息(默认关闭),可以查看所有访问本站的记录

添加?refresh=5表示每隔5秒刷新一次页面,不加也可以

http://127.0.0.1/server-status?refresh=5

0x2.2 AddHandler
AddHandler 可以在文件扩展名与特定的处理器之间建立映射
用法:

AddHandler handler-name extension [extension] ...

例如:

AddHandler cgi-script .xxx ——将扩展名为 .xxx 的文件作为 CGI 脚本来处理

0x2.3AddType
AddType 可以将给定的文件扩展名映射到指定的内容类型
用法:

AddType media-type extension [extension] ...

示例:

AddType application/x-httpd-php .gif ——将以 gif 为后缀的文件当做 php 解析
AddType application/x-httpd-php png jpg gif——将以 .png .jpg .gif 多个后缀当做 php 解析

0x2.4php_value
当使用 PHP 作为 Apache 模块时,也可以用 Apache 的配置文件(例如 httpd.conf) 和 .htaccess 文件中的指令来修改 php 的配置设定。需要有AllowOverride Options 或 AllowOverride All 权限才可以。
注:php_value 设定指定的值。要清除先前设定的值,把 value 设为 none。不要用 php_value 设 定布尔值。应该用 php_flag。
用法:

php_value name value

查看 配置可被设定范围

由上可知 .htaccess 只能用于 PHP_INI_ALL 或 PHP_INI_PERDIR 类型的指令。
查看 php.ini 配置选项列表 ,寻找可利用指令
(1) 文件包含配置选项

• auto_prepend_file:在主文件解析之前自动解析包含的文件
• auto_append_file:在主文件解析后自动解析包含的文件

例如:
php_value auto_prepend_file images.png访问一个 php 文件时,在该文件解析之前会先自动解析 images.png 文件
(2) 绕过preg_match

例如:

php_value pcre.backtrack_limit 0
php_value pcre.jit 0

设置正则回朔次数来使正则匹配的结果返回为 false 而不是0 ,从而可以绕过正则。
0x2.5php_flag
php_flag 用来设定布尔值的 php 配置指令
用法:

php_flag name on|off

查看 php.ini 配置选项列表 ,寻找可利用指令
可以将 engine 设置为 0,在本目录和子目录中关闭 php 解析,造成源码泄露

php_flag engine 0
相关文章
|
Apache
Apache配置文件httpd.conf/htaccess中deny和allow的使用
Apache配置文件httpd.conf/htaccess中deny和allow的使用
177 0
|
Apache Windows
Apache下htaccess文件不起作用/rewrite 没有效果
Apache下htaccess文件不起作用/rewrite 没有效果
320 0
|
安全 Apache 数据安全/隐私保护
|
Apache
apache 设置.htaccess 禁止ip访问
网站遭受攻击,拦截ip访问
300 0
|
Web App开发 Apache 数据安全/隐私保护
|
存储 Apache 数据安全/隐私保护
用Apache的HTACCESS保护密码
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/46481573 用Apache的HTACCESS保护密码 作者:chszs,转载需注明。
892 0

推荐镜像

更多