SuperStarter使用Arcjet,这是一个安全即代码产品,包含多个可以单独使用或组合使用的功能,为您的站点提供深度防御。您可以注册免费账户并将API密钥添加到环境变量中以使用我们包含的功能。

当存在ARCJET_KEY环境变量时,安全功能会自动启用。

理念

适当的安全保护需要应用程序的完整上下文,这就是为什么安全规则和保护措施应该与它们保护的代码放在一起。

Arcjet安全即代码意味着您可以对安全规则进行版本控制,通过拉取请求跟踪变更,并在部署到生产环境之前在本地进行测试。

配置

Arcjet在SuperStarter中配置了两个主要功能:机器人检测和Arcjet Shield WAF:

webapp应用都配置了Arcjet,在@repo/security有一个包含Shield WAF规则的中心客户端。每个应用然后扩展这个客户端以添加额外的规则:

Web

对于web应用,机器人检测和Arcjet Shield WAF都在中间件中配置,以阻止爬虫和其他机器人,但仍允许搜索引擎、预览链接生成器和监控服务。默认情况下,这将在每个请求上运行,静态资源除外。

App

对于app应用,中心客户端在认证路由布局apps/app/app/(authenticated)/layout.tsx中扩展了机器人检测功能,以阻止除预览链接生成器外的所有机器人。这仅会在认证路由上运行。为了额外的保护,您可能还想在apps/app/app/(unauthenticated)/layout.tsx路由上配置Arcjet,但Clerk默认在其登录路由处理程序中包含机器人检测和速率限制。

当规则被触发时,请求将被阻止并返回错误。您可以在代码中自定义错误消息,重定向到其他页面,或以其他方式处理错误。

扩展您的安全

SuperStarter包含一个针对SaaS应用常见威胁的Arcjet样板设置,但由于规则是在代码中定义的,您可以轻松地在运行时动态调整它们。

例如,如果您为应用程序构建API,您可以使用Arcjet速率限制,根据用户的定价计划设置不同的配额。

其他功能包括PII检测电子邮件验证。它们在样板中没有使用,但可以根据需要添加。

DDoS攻击怎么办?

网络层攻击通常是通用的且流量巨大,最好由您的托管平台处理。大多数云提供商默认提供网络DDoS保护功能。

Arcjet更靠近您的应用程序,因此可以理解上下文。这很重要,因为某些类型的流量可能看起来不像DDoS攻击,但仍可能产生相同的效果,例如发出过多的API请求。Arcjet在所有环境中都有效,因此不会锁定特定平台的安全功能。

大规模网络攻击最好由您的托管提供商处理。应用程序级别的攻击需要由应用程序处理。这就是Arcjet发挥作用的地方。