sveltekit 中的端点是否免受攻击?

Pål*_*röm -2 javascript svelte sveltekit

我在 sveltekits 中不明白一件事。我将端点保存在 /routes/api/ 中。它们对于构建、生产中的用户来说是不可见的吗?在开发中,我可以通过浏览器或邮递员访问它们。安全吗?

Jax*_*axx 5

这是一个比你想象的更广泛的问题。首先需要注意的是,我认为可以公平地说,没有任何已部署的(即可公开访问的)端点在绝对意义上“免受攻击”。根据定义,如果端点可公开访问,那么潜在的攻击者就可以探测它。这并不是 SvelteKit 特有的,但是对于任何可公开访问的 API 都是如此。

SvelteKit 端点是路由树的一部分这一事实并不意味着它们比任何其他框架中的端点更安全或更不安全。没有列出所有端点的索引页(除非您发布一个(!)或者除非您在服务器配置中不正确地设置了索引选项 -例如,请参阅 Apache 的IndexOptions指令)。

然而,任何有价值的开发人员都还可以通过浏览器开发工具的网络选项卡来监视网络活动,从而可以相当容易地找出您在应用程序中使用的端点。

最终,您作为开发人员的角色是保护您的端点免遭未经授权的访问或使用。您有多种工具可供使用:

  • CORS 配置将限制哪些网站/域可以访问您的端点(尽管这最终可以通过代理 API 来回避)
  • “授权”标头或查询参数可以帮助通过 API 密钥、JWT 令牌等实现身份验证方案,但显然会要求您的用户进行身份验证
  • 速率限制和查询深度限制(对于 GraphQL 端点)也是相关主题
  • 通常关心的问题,例如保护自己免受数据库注入(清理/规范化用户数据)等。

然而,我必须再次强调,这并不是 SvelteKit 特有的。SvelteKit 的端点是路由树的一部分这一事实并不会使这些端点比任何其他框架更安全或更不安全。