sveltekit 中的端点是否可以免受攻击?
Are endpoints in sveltekit safe from attacks?
有一件事我在 sveltekits 中不明白。我将端点保存在 /routes/api/ 中。在构建、生产中,它们对用户不可见吗?在开发中,我可以通过浏览器或邮递员访问它们。安全吗?
这个问题比您想象的要广泛。首先要注意的是,我认为可以公平地说,从绝对意义上说,没有部署的(即可公开访问的)端点永远“免受攻击”。根据定义,如果端点可公开访问,那么 would-be 攻击者 可以 探测它。这不是 SvelteKit 特有的,但是,对于任何可公开访问的 API.
都是如此
SvelteKit 端点是路由树的一部分这一事实并没有使它们比任何其他框架中的端点更安全或更不安全。没有列出所有端点的索引页面(除非您发布一个(!)或者除非您在服务器配置中不正确地设置索引选项 - 例如,请参阅 Apache 的 IndexOptions 指令)。
但是,任何值得 his/her 一粒盐的开发人员也将能够通过其浏览器的开发工具的网络选项卡监控网络 activity,从而很容易找到任何端点你在你的应用程序中使用。
最终,作为开发人员,您的职责是保护您的端点免遭未经授权的访问或使用。您可以使用多种工具:
- CORS 配置将限制哪些 websites/domains 可以访问您的端点(尽管这最终可以通过代理 API 回避)
- 'Authorization' headers 或查询参数可以帮助通过 API 密钥、JWT 令牌等实现身份验证方案,但显然需要您的用户进行身份验证
- rate-limiting 和 depth-of-query-limiting(对于 GraphQL 端点)也是相关主题
- 常见问题,例如保护自己免受数据库注入(sanitizing/normalizing 用户数据)等
但是,我必须再次强调 none 这是 SvelteKit 特有的。事实上,SvelteKit 的端点是路由树的一部分 not 使这些端点比任何其他框架更安全或更不安全。
有一件事我在 sveltekits 中不明白。我将端点保存在 /routes/api/ 中。在构建、生产中,它们对用户不可见吗?在开发中,我可以通过浏览器或邮递员访问它们。安全吗?
这个问题比您想象的要广泛。首先要注意的是,我认为可以公平地说,从绝对意义上说,没有部署的(即可公开访问的)端点永远“免受攻击”。根据定义,如果端点可公开访问,那么 would-be 攻击者 可以 探测它。这不是 SvelteKit 特有的,但是,对于任何可公开访问的 API.
都是如此SvelteKit 端点是路由树的一部分这一事实并没有使它们比任何其他框架中的端点更安全或更不安全。没有列出所有端点的索引页面(除非您发布一个(!)或者除非您在服务器配置中不正确地设置索引选项 - 例如,请参阅 Apache 的 IndexOptions 指令)。
但是,任何值得 his/her 一粒盐的开发人员也将能够通过其浏览器的开发工具的网络选项卡监控网络 activity,从而很容易找到任何端点你在你的应用程序中使用。
最终,作为开发人员,您的职责是保护您的端点免遭未经授权的访问或使用。您可以使用多种工具:
- CORS 配置将限制哪些 websites/domains 可以访问您的端点(尽管这最终可以通过代理 API 回避)
- 'Authorization' headers 或查询参数可以帮助通过 API 密钥、JWT 令牌等实现身份验证方案,但显然需要您的用户进行身份验证
- rate-limiting 和 depth-of-query-limiting(对于 GraphQL 端点)也是相关主题
- 常见问题,例如保护自己免受数据库注入(sanitizing/normalizing 用户数据)等
但是,我必须再次强调 none 这是 SvelteKit 特有的。事实上,SvelteKit 的端点是路由树的一部分 not 使这些端点比任何其他框架更安全或更不安全。