Node.js AWS API网关仅限制从S3静态网页访问
我在AWS EBS上部署了一个Node.js express服务器,客户端用React编写,作为静态网页部署到S3 bucket 我正在开发某种特定服务的注册系统,我不想向用户请求凭据,所以我猜csrf\jwt不起作用 是否仍有阻止来自客户端以外的源的所有http请求的方法?现在,有人可能只是使用邮递员向我的服务器发出请求,例如仅通过电子邮件创建用户 我尝试使用私有API网关,但找不到让客户端成功发出请求的方法。Node.js AWS API网关仅限制从S3静态网页访问,node.js,amazon-web-services,amazon-s3,aws-api-gateway,Node.js,Amazon Web Services,Amazon S3,Aws Api Gateway,我在AWS EBS上部署了一个Node.js express服务器,客户端用React编写,作为静态网页部署到S3 bucket 我正在开发某种特定服务的注册系统,我不想向用户请求凭据,所以我猜csrf\jwt不起作用 是否仍有阻止来自客户端以外的源的所有http请求的方法?现在,有人可能只是使用邮递员向我的服务器发出请求,例如仅通过电子邮件创建用户 我尝试使用私有API网关,但找不到让客户端成功发出请求的方法。 我曾考虑对http请求有效负载进行加密,但我没有发现在任何人都无法通过浏览器看到的
我曾考虑对http请求有效负载进行加密,但我没有发现在任何人都无法通过浏览器看到的地方存储私钥…您无法阻止所有
http
请求,但肯定可以通过添加中间件来拒绝
app.use((req, res, next) => {
if(req.protocol === 'http' && req.hostname!== <client domain>){
return res.sendStatus(403);
} next();
})
app.use((请求、恢复、下一步)=>{
if(req.protocol=='http'&&req.hostname!==){
返回res.sendStatus(403);
}next();
})
来源只是一个HTTP头,有人可以在他们的邮递员请求中设置,即“欺骗”。您可以检查原点以阻止随机扫描机器人,但它不会阻止任何已确定的人。所以,请不要把它混淆为实际的安全性。您可以通过将AWS Web Application Firewall连接到您的EB负载平衡器来实现这一点,或者只需在express中间件中添加一个复选框,如另一个答案所示
关于私有API网关,这在这种情况下永远不会起作用,这只适用于VPC网络内的资源,并且您的React应用程序正在公共互联网上的人们的web浏览器中运行
关于有人创建一个用户帐户“只有一封电子邮件”这是你要处理的,你应该在服务器端完全验证该请求,因为你知道该请求可能来自使用诸如Postman之类的工具的人,因为在你的场景中没有办法完全阻止
如果您想使用API网关实现这一点,您可以尝试在那里实现。您还可以将Web应用程序防火墙连接到API网关。我相信您也可以作为API网关请求验证程序的一部分来执行源标题检查。Node.js服务器?它是express服务器吗?您的API网关域在客户端上是否可见?