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

    描述:Session 加密支持
    状态:试验
    模块标识符:sessioncrypto_module
    源文件:mod_sessioncrypto.c
    兼容性:可在 Apache 2.3 及更高版本中使用

    摘要

    警告

    session 模块使用 HTTP cookies,因此可能成为 Cross Site Scripting 攻击的受害者,或者将潜在的私人信息暴露给 clients。在服务器上启用 session 功能之前,请确保已考虑相关风险。

    mod_session的这个子模块在写入本地数据库之前提供对用户会话加密的支持,或者通过 HTTP cookie 写入 remote 浏览器。

    这有助于为用户会话提供隐私,其中 session 的内容应保持对用户的私密性,或者需要保护以防止跨站点脚本攻击的影响。

    有关 session 接口的更多详细信息,请参阅mod_session模块的文档。

    基本用法

    要创建一个简单的加密 session 并将其存储在名为 session 的 cookie 中,请按以下方式配置 session:

    基于浏览器的加密 session

    Session On
    SessionCookieName session path=/
    SessionCryptoPassphrase secret
    

    session 将使用给定的 key 加密。通过确保在每个服务器上使用相同的加密 key,可以将不同的服务器配置为共享会话。

    如果更改了加密 key,会话将自动失效。

    有关如何使用 session 来存储用户名和密码详细信息的文档,请参阅mod_auth_form模块。

    SessionCryptoCipher 指令

    描述:用于加密 session 的加密密码
    句法:SessionCryptoCipher name
    默认:SessionCryptoCipher aes256
    Context:server config,virtual host,directory,.htaccess
    状态:试验
    模块:mod_sessioncrypto
    兼容性:可在 Apache 2.3.0 及更高版本中使用

    SessionCryptoCipher指令允许在加密期间使用密码。如果未指定,则密码默认为aes256

    可能的值取决于正在使用的加密驱动程序,可能是以下之一:

    • des192
    • AES128
    • AES192
    • AES256

    SessionCryptoDriver 指令

    描述:用于加密 session 的加密驱动程序
    句法:SessionCryptoDriver name[param[=value]]
    默认:none
    Context:服务器配置
    状态:试验
    模块:mod_sessioncrypto
    兼容性:可在 Apache 2.3.0 及更高版本中使用

    SessionCryptoDriver指令指定要用于加密的加密驱动程序的 name。如果未指定,则驱动程序默认为编译为 APR-util 的推荐驱动程序。

    NSS 加密驱动程序需要一些 configuration 参数,这些参数在 driver name 之后被指定为带有可选值的参数。

    没有证书数据库的 NSS

    SessionCryptoDriver nss
    

    NSS 与证书数据库

    SessionCryptoDriver nss dir=certs
    

    NSS 具有证书数据库和参数

    SessionCryptoDriver nss dir=certs key3=key3.db cert7=cert7.db secmod=secmod
    

    带有 paths 的 NSS 包含空格

    SessionCryptoDriver nss "dir=My Certs" key3=key3.db cert7=cert7.db secmod=secmod
    

    NSS 加密驱动程序可能已由服务器的另一部分配置,例如mod_nss或modldap。如果发现已配置,将记录警告,现有的 configuration 将生效。要避免此警告,请使用 noinit 参数,如下所示。

    NSS 与证书数据库

    SessionCryptoDriver nss noinit
    

    为防止混淆,请确保所有需要 NSS 的模块都配置了相同的参数。

    openssl 加密驱动程序支持可选参数以指定用于加密的引擎。

    支持引擎的 OpenSSL

    SessionCryptoDriver openssl engine=name
    

    SessionCryptoPassphrase 指令

    描述:key 用于加密 session
    句法:SessionCryptoPassphrase secret[ secret ...]
    默认:none
    Context:server config,virtual host,directory,.htaccess
    状态:试验
    模块:mod_sessioncrypto
    兼容性:可在 Apache 2.3.0 及更高版本中使用

    SessionCryptoPassphrase指令指定在写 session 之前用于对 session 的内容进行对称加密的密钥,或者在读取 session 之后解密 session 的内容。

    密钥在 long 时更安全,并且由真正随机的字符组成。更改服务器上的 key 会使所有现有会话无效。

    可以在 order 中指定多个键以支持 key 旋转。列出的第一个 key 将用于加密,而列出的所有键都将尝试进行解密。要在 time 期间跨多个服务器轮换密钥,请在列表末尾添加新的 secret,并在完全推出到所有服务器后,从列表的开头删除第一个 key。

    从 version 2.4.7 开始,如果 value 以 exec 开头:将执行生成的命令,程序返回标准输出的第一个 line 将用作 key。

    #key used as-is
    SessionCryptoPassphrase secret
    
    #Run /path/to/program to get key
    SessionCryptoPassphrase exec:/path/to/program
    
    #Run /path/to/otherProgram and provide arguments
    SessionCryptoPassphrase "exec:/path/to/otherProgram argument1"
    

    SessionCryptoPassphraseFile 指令

    描述:包含用于加密 session 的密钥的文件
    句法:SessionCryptoPassphraseFile filename
    默认:none
    Context:server config,virtual host,目录
    状态:试验
    模块:mod_sessioncrypto
    兼容性:可在 Apache 2.3.0 及更高版本中使用

    SessionCryptoPassphraseFile指令指定 configuration 文件的 name,该文件包含用于加密或解密 session 的密钥,每个 line 指定一个。在服务器启动时读取该文件,httpd 需要正常重启以获取对密钥的更改。

    与SessionCryptoPassphrase指令不同,密钥不在 httpd configuration 中公开,可以通过适当保护文件来隐藏。

    可以在 order 中指定多个键以支持 key 旋转。列出的第一个 key 将用于加密,而列出的所有键都将尝试进行解密。要在 time 期间跨多个服务器轮换密钥,请在列表末尾添加新的 secret,并在完全推出到所有服务器后,从列表的开头删除第一个 key。