Apollo Express CORS 选项
Apollo Express CORS options
如何保护我的 graphql 路由不被未知资源查询?
我目前有这些选项:
export const corsOptions = {
origin: ["https://my-website.com", "https://api.my-website.com"],
credentials: true,
}
expressApp.use(cors(corsOptions))
apolloServer.applyMiddleware({expressApp, cors: corsOptions})
我已将其部署在 AWS/Fargate。
问题是我仍然可以从我的计算机在 Postman 中查询。
请注意,我还将有一个 React-native 应用程序连接到此 API。
什么是适合我的 CORS 选项?
正如评论中所指出的,CORS 仅由浏览器强制执行——它不能用于阻止其他客户端(如 Postman)访问您的 API。
如果您的 API 仅由其他服务器使用,您可以使用 API 密钥保护它,该密钥可以包含在 header 中或作为 URL范围。 API 密钥也可用于计量 rate-limit 您的 API 的消费者。
如果您的 API 被 Web 或本机应用程序使用,则使用 API 密钥基本上毫无意义,因为最终用户可以通过检查源代码来获取它或嗅探他们的本地流量。如果您无论如何都需要用户登录,那么您只需为您的查询实施适当的授权机制。如果您希望无需登录即可访问您的部分或全部查询,那么最好的办法是实施 rate-limiting 以限制潜在的滥用。
如何保护我的 graphql 路由不被未知资源查询?
我目前有这些选项:
export const corsOptions = {
origin: ["https://my-website.com", "https://api.my-website.com"],
credentials: true,
}
expressApp.use(cors(corsOptions))
apolloServer.applyMiddleware({expressApp, cors: corsOptions})
我已将其部署在 AWS/Fargate。
问题是我仍然可以从我的计算机在 Postman 中查询。
请注意,我还将有一个 React-native 应用程序连接到此 API。
什么是适合我的 CORS 选项?
正如评论中所指出的,CORS 仅由浏览器强制执行——它不能用于阻止其他客户端(如 Postman)访问您的 API。
如果您的 API 仅由其他服务器使用,您可以使用 API 密钥保护它,该密钥可以包含在 header 中或作为 URL范围。 API 密钥也可用于计量 rate-limit 您的 API 的消费者。
如果您的 API 被 Web 或本机应用程序使用,则使用 API 密钥基本上毫无意义,因为最终用户可以通过检查源代码来获取它或嗅探他们的本地流量。如果您无论如何都需要用户登录,那么您只需为您的查询实施适当的授权机制。如果您希望无需登录即可访问您的部分或全部查询,那么最好的办法是实施 rate-limiting 以限制潜在的滥用。