Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services event.requestContext.identity.CognitoIdentity是否可以被欺骗?_Amazon Web Services_Amazon Cognito_Acl_Spoofing - Fatal编程技术网

Amazon web services event.requestContext.identity.CognitoIdentity是否可以被欺骗?

Amazon web services event.requestContext.identity.CognitoIdentity是否可以被欺骗?,amazon-web-services,amazon-cognito,acl,spoofing,Amazon Web Services,Amazon Cognito,Acl,Spoofing,我试图通过断言DynamoDB中字段UserId为event.requestContext.identity.cognitoIdentityId的项是否确实是登录的项来执行ACL 但是,我担心它会像HTTP头一样被欺骗 我的问题是,这安全吗?不,这不能像HTTP请求头那样被欺骗。如果请求通过API网关(作为Lambda代理集成)传入,那么浏览器将无法覆盖这些值,因为Lambda事件结构的这一部分是由API网关创建的,而不是从请求复制的。任何注入HTTP请求的内容都会出现在事件结构的其他地方,而不

我试图通过断言DynamoDB中字段UserId为
event.requestContext.identity.cognitoIdentityId的项是否确实是登录的项来执行ACL

但是,我担心它会像HTTP头一样被欺骗


我的问题是,这安全吗?

不,这不能像HTTP请求头那样被欺骗。如果请求通过API网关(作为Lambda代理集成)传入,那么浏览器将无法覆盖这些值,因为Lambda事件结构的这一部分是由API网关创建的,而不是从请求复制的。任何注入HTTP请求的内容都会出现在事件结构的其他地方,而不是这里。(HTTP请求位于
event.input
——它是
event.requestContext
的同级对象,而不是父对象。)

但话说回来。。。是的,这可能在某些其他错误配置场景中被欺骗——例如,您的Lambda函数允许自己被调用,而不是通过API网关部署进行调用——那么调用程序当然可以创建一个与任何HTTP请求无关的完整的
事件
结构,并使用它调用Lambda函数。这可能太明显了,不值得一提,因为从控制台测试Lambda函数的方式来看,这是隐式的,但我提到它是为了彻底。使用Lambda控制台的测试函数向Lambda函数发送伪造的测试事件,Lambda函数自然会处理您发送的内容


因此,毫不奇怪,由于粗心和过于宽泛的权限,是的,任何事情都是可能的。。。但是,作为Lambda代理集成,在API网关后面的意图,我会说no.

我已经研究了很多小时了

我发现作者通过以下方式从令牌中提取
用户ID

const userId = await services.getUserIdFromToken(event.headers.Authorization);
这似乎是处理设置userId的更安全的方法,但我看到的所有其他示例都使用
event.requestContext.identity.cognitoIdentityId