AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 709742
Accepted
sa289
sa289
Asked: 2015-07-31 08:57:02 +0800 CST2015-07-31 08:57:02 +0800 CST 2015-07-31 08:57:02 +0800 CST

Apache 安全 - 列出所有可能的处理程序/操作

  • 772

为了确保不存在可以通过 .htaccess 被利用的安全漏洞,我们如何才能看到 Apache 可以通过 和 等指令使用的所有可能的处理SetHanlder程序AddHandler。

我知道我可以通过查看 mod_info 的输出或通过 conf 文件 grepping 找到一些(这是我在尝试找到此问题的答案时发现的一种方法),但这并不意味着没有可用的处理程序不是这样列出的。我想我可以下载并搜索 Apache 的所有源代码以及加载的每个模块并查看它们正在注册的内容,但是有更好的方法吗?

一个快速的解决方法是在 .htaccess 中不允许 AddHandler 和 SetHandler,但这有其缺点。例如,Drupal 有一个有效的 SetHandler 指令用例,因为它使用它作为深度防御的一部分,以防止 PHP 脚本运行,如果有人设法通过文件上传器将它们上传到站点。

以下是我所指的一些示例:

AddHandler server-parsed .shtml

SetHandler server-info

AddHandler application/x-httpd-php5 .php

如果有人感兴趣,这里是来自 sites/default/files/.htaccess 的 Drupal 用例:

# Set the catch-all handler to prevent scripts from being executed.
SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
<Files *>
  # Override the handler again if we're run later in the evaluation list.
  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
</Files>

编辑 2015 年 7 月 30 日:这不是一个详尽的答案,但如果它对任何人都有帮助,我发现一些处理程序列在http://httpd.apache.org/docs/2.4/handler.html的顶部并且还阅读了可以通过 Action 指令创建自定义处理程序(请参阅http://httpd.apache.org/docs/2.4/mod/mod_actions.html#action)。

编辑 2015 年 9 月 1 日:我想知道是否有某种方法可以转储 httpd 进程的内存并在其中找到处理程序名称。我使用 gcore 进行了尝试,但没有成功(尽管我以前从未使用过它并且在执行此操作时收到警告,所以我不确定我是否做错了什么)。

apache-2.2
  • 2 2 个回答
  • 820 Views

2 个回答

  • Voted
  1. mc0e
    2015-08-01T03:15:26+08:002015-08-01T03:15:26+08:00

    我很确定没有已经实现的方法来返回您的处理程序可以将请求映射到的现有操作、脚本等列表。

    编写一个可以返回此类信息的 apache 模块可能是可能的,但需要对 apache 代码进行一些探索才能了解那里的可能性。

    • 1
  2. Best Answer
    Daniel Gruno
    2015-09-03T12:06:43+08:002015-09-03T12:06:43+08:00

    不可能,对不起。根据我在The Apache Modules Guide上的声明:

    因此,服务器本身并不假定知道哪个模块负责处理特定请求,而是会询问每个模块是否对给定请求感兴趣。然后由每个模块决定是否温和地拒绝服务请求、接受服务或完全拒绝服务请求,就像身份验证/授权模块所做的那样

    根据设计,这一切都是在请求时处理的,因此您无法遍历模块或以其他方式解决此问题。您必须阅读每个模块的源代码以了解它们的处理程序名称。

    最好的办法是自己制作一个模块,根据一组接受的处理程序名称检查当前为请求设置的处理程序,如果列表中不存在,则将其更改为默认值。

    • 1

相关问题

  • Apache Django Mod_Wsgi - 自动重新加载应用程序

  • Apache:对多个虚拟主机使用相同的目录指令

  • Apache 上的子域不工作 - 找不到服务器

  • PHP 作为 CGI 还是 Apache 模块?

  • 避免将某些丢失的文件记录到 Apache2 错误日志中

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve