安全性

本页包含关于Better Auth安全特性的信息。

密码哈希

Better Auth默认使用scrypt算法来哈希密码。该算法设计为内存密集型和CPU密集型,使其能够抵抗暴力攻击。您可以通过在配置中设置password选项来自定义密码哈希函数。此选项应包括一个用于哈希密码的hash函数和一个用于验证密码的verify函数。

会话管理

会话过期

Better Auth使用安全的会话管理来保护用户数据。会话存储在数据库或辅助存储(如果已配置)中,以防止未授权访问。默认情况下,会话在7天后过期,但您可以在配置中自定义此值。此外,每次使用会话时,如果达到updateAge阈值(默认为1天),过期日期将被延长。

会话撤销

Better Auth允许您撤销会话以增强安全性。当会话被撤销时,用户将被登出,并且不能再访问应用程序。已登录的用户还可以撤销自己的会话,以从不同的设备或浏览器登出。

有关更多详细信息,请参阅会话管理

CSRF保护

Better Auth通过验证请求中的Origin头来确保CSRF保护。此检查确认请求来自应用程序或受信任的来源。如果请求来自不受信任的来源,它将被阻止以防止潜在的CSRF攻击。默认情况下,与基础URL匹配的来源是受信任的,但您可以在trustedOrigins配置选项中设置受信任来源列表。

OAuth状态和PKCE

为了保护OAuth流程,Better Auth将OAuth状态和PKCE(Proof Key for Code Exchange)存储在数据库中。状态有助于防止CSRF攻击,而PKCE保护防止代码注入威胁。一旦OAuth过程完成,这些值将从数据库中删除。

Cookies

当基础URL使用https时,Better Auth默认分配安全cookie。这些安全cookie是加密的,只通过安全连接发送,增加了额外的保护层。它们还默认设置了sameSite属性为lax,以防止跨站请求伪造攻击。并且启用了httpOnly属性,以防止客户端JavaScript访问cookie。

对于跨子域Cookie,您可以在配置中设置crossSubDomainCookies选项。此选项允许cookie在子域之间共享,实现跨多个子域的无缝认证。

自定义Cookies

您可以自定义cookie名称以最小化指纹攻击的风险,并根据需要设置特定的cookie选项以获得额外的控制。有关更多信息,请参阅cookie选项

插件也可以设置自定义cookie选项,以符合特定的安全需求。如果您在非浏览器环境中使用Better Auth,插件还提供了在这些环境中安全管理cookie的方法。

速率限制

Better Auth包含内置的速率限制,以防止暴力攻击。默认情况下,速率限制适用于所有路由,特定路由根据潜在风险受到更严格的限制。

IP地址头

Better Auth使用客户端IP地址进行速率限制和安全监控。默认情况下,它从标准的X-Forwarded-For头读取IP地址。但是,您可以配置特定的受信任头,以确保准确的IP地址检测并防止IP欺骗攻击。

您可以在Better Auth配置中配置IP地址头:

{
  security: {
    ipAddress: {
      ipAddressHeaders: ['cf-connecting-ip'] // 或任何其他自定义头
    }
  }
}

这确保Better Auth只接受来自您受信任代理的头中的IP地址,使攻击者更难通过欺骗头来绕过速率限制或其他基于IP的安全措施。

重要:设置自定义IP地址头时,确保您的代理或负载均衡器正确配置为设置此头,并且最终用户不能直接设置它。

受信任来源

受信任来源防止CSRF攻击并阻止开放重定向。您可以在trustedOrigins配置选项中设置受信任来源列表。来自不在此列表上的来源的请求将自动被阻止。

报告漏洞

如果您在Better Auth中发现安全漏洞,请通过security@better-auth.com向我们报告。我们会及时处理所有报告,并对经验证的发现给予信任。

On this page