当存在
ARCJET_KEY
环境变量时,安全功能会自动启用。理念
适当的安全保护需要应用程序的完整上下文,这就是为什么安全规则和保护措施应该与它们保护的代码放在一起。 Arcjet安全即代码意味着您可以对安全规则进行版本控制,通过拉取请求跟踪变更,并在部署到生产环境之前在本地进行测试。配置
Arcjet在ShipThing中配置了两个主要功能:机器人检测和Arcjet Shield WAF:- 机器人检测配置为允许搜索引擎、预览链接生成器(如Slack和Twitter预览)以及常见的正常运行时间监控服务。所有其他机器人,如爬虫和AI爬虫,将被阻止。您可以配置其他机器人类型以允许或阻止。
- Arcjet Shield WAF将检测并阻止常见攻击,如SQL注入、跨站脚本和其他OWASP Top 10漏洞。
web
和app
应用都配置了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默认在其登录路由处理程序中包含机器人检测和速率限制。
当规则被触发时,请求将被阻止并返回错误。您可以在代码中自定义错误消息,重定向到其他页面,或以其他方式处理错误。