• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • mod_dav

    描述:分布式创作和版本控制(WebDAV)功能
    状态:延期
    模块标识符:dav_module
    源文件:mod_dav.c

    摘要

    该模块为 Apache 提供了 class 1 和 class 2 WebDAV('Web-based 分布式创作和版本控制')功能。 HTTP 协议的此扩展允许在 remote web 服务器上创建,移动,复制和删除资源和集合。

    启用 WebDAV

    要启用mod_dav,请将以下内容添加到httpd.conf文件中的容器中:

    Dav On
    

    这启用了由mod_dav_fs模块实现的 DAV 文件系统提供程序。因此,必须使用LoadModule指令将该模块编译到服务器中或在运行时加载。

    此外,必须使用DavLockDB指令在httpd.conf文件的 global 部分中指定 DAV 锁定数据库的位置:

    DavLockDB /usr/local/apache2/var/DavLock
    

    包含锁数据库文件的目录必须可由_A和组写入 Apache running。

    您可能希望在<Location>指令中添加<Limit>子句以限制对 DAV-enabled 位置的访问。如果要设置 DAV client 可以在一个请求中发送的最大字节数,则必须使用LimitXMLRequestBody指令。“normal”LimitRequestBody指令对 DAV 请求没有影响。

    完整示例

    DavLockDB "/usr/local/apache2/var/DavLock"
    
    <Directory "/usr/local/apache2/htdocs/foo">
        Require all granted
        Dav On
    
        AuthType Basic
        AuthName DAV
        AuthUserFile "user.passwd"
    
        <LimitExcept GET POST OPTIONS>
            Require user admin
        </LimitExcept>
    </Directory>
    

    安全问题

    由于 DAV 访问方法允许 remote clients 操作服务器上的 files,因此在启用mod_dav之前必须特别注意确保服务器是安全的。

    服务器上启用 DAV 的任何位置都应通过身份验证进行保护。建议不要使用 HTTP 基本身份验证。您应该至少使用由mod_auth_digest模块提供的 HTTP 摘要式身份验证。几乎所有 WebDAV clients 都支持此身份验证方法。另一种方法是在启用SSL的连接上进行基本身份验证。

    在mod_dav管理 files 的 order 中,它必须能够使用 Apache running 下的用户和组写入其控制下的目录和 files。创建的新 files 也将归用户和组所有。因此,控制对此帐户的访问权限非常重要。 DAV repository 被认为是 Apache 的私有;不应允许在 Apache 之外修改 files(对于使用 FTP 或 filesystem-level 工具的 example)。

    mod_dav可能受到各种 denial-of-service 攻击。LimitXMLRequestBody指令可用于限制解析大型 DAV 请求时消耗的 memory 数量。DavDepthInfinity指令可以用来防止_consume 中存在大量 memory 的PROPFIND请求。另一种可能的 denial-of-service 攻击涉及 client 简单地用许多大 files 填充所有可用磁盘空间。在 Apache 中没有直接的方法来阻止这种情况,因此您应该避免向不受信任的用户提供 DAV 访问权限。

    复杂配置

    一个 common 请求是使用mod_dav来操作动态 files(PHP 脚本,CGI 脚本等)。这很难,因为GET请求总是 run 脚本,而不是下载其内容。避免这种情况的一种方法是将两个不同的 URL 映射到内容,其中一个将运行脚本,其中一个将允许使用 DAV 下载和操作它。

    Alias "/phparea" "/home/gstein/php_files"
    Alias "/php-source" "/home/gstein/php_files"
    <Location "/php-source">
        Dav On
        ForceType text/plain
    </Location>
    

    通过此设置,http://example.com/phparea可用于访问 PHP 脚本的输出,而http://example.com/php-source可与 DAV client 一起使用来操作它们。

    Dav 指令

    描述:启用 WebDAV HTTP 方法
    句法:Dav On\|Off\|provider-name
    默认:Dav Off
    Context:目录
    状态:延期
    模块:mod_dav

    使用Dav指令为给定容器启用 WebDAV HTTP 方法:

    <Location "/foo">
        Dav On
    </Location>
    

    value On实际上是mod_dav_fs模块提供的默认提供程序filesystem的别名。请注意,一旦为某个位置启用了 DAV,就无法为子位置禁用它。有关完整的 configuration example,请查看以上部分。

    在保护服务器之前,请不要启用 WebDAV。否则,每个人都可以在您的系统上分发 files。

    DavDepthInfinity 指令

    描述:允许 PROPFIND,深度:无限请求
    句法:DavDepthInfinity on\|off
    默认:DavDepthInfinity off
    Context:server config,virtual host,目录
    状态:延期
    模块:mod_dav

    使用DavDepthInfinity指令允许处理包含标题'Depth:Infinity'的PROPFIND请求。由于此类请求可能构成 denial-of-service 攻击,因此默认情况下不允许。

    DavMinTimeout 指令

    描述:服务器保持对 DAV 资源的锁定的最小 time 时间
    句法:DavMinTimeout seconds
    默认:DavMinTimeout 0
    Context:server config,virtual host,目录
    状态:延期
    模块:mod_dav

    当 client 请求 DAV 资源锁定时,它还可以指定服务器自动删除锁定时的 time。此 value 只是一个请求,服务器可以忽略它或通知 client 任意 value。

    使用DavMinTimeout指令以秒为单位指定 return 到 client 的最小锁定超时。 Microsoft Web 文件夹默认为 120 秒的超时;DavMinTimeout可以将此值覆盖到更高的 value(例如 600 秒),以减少 client 因网络延迟而失去锁定的可能性。

    <Location "/MSWord">
        DavMinTimeout 600
    </Location>
    

    上篇:mod_data

    下篇:mod_dav_fs