首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当带有"https://“is Posted”的字符串时,API Gateway返回禁止

当带有"https://“is Posted”的字符串时,API Gateway返回禁止
EN

Stack Overflow用户
提问于 2020-11-20 05:47:49
回答 1查看 299关注 0票数 2

我有一个API Gateway端点设置,它使用Lambda函数在DynamoDB中存储URL。当我在正文中发布包含以下内容的消息时

代码语言:javascript
复制
"videoURL": "www.youtube.com/watch?v=cgpvCVkrV6M"

端点工作正常。它返回200并更新DynamoDB记录。然而,当我发布这篇文章时

代码语言:javascript
复制
"videoURL": "https://www.youtube.com/watch?v=cgpvCVkrV6M"

端点返回403禁止响应,并且数据库记录不会更新。

当我在API Gateway内部测试时,"https://“字符串被接受。

我还启用了API密钥、使用计划、客户端证书和CORS (用于本地测试)。我不认为这些都是我的问题的原因。

有没有人能猜出"https://“字符串为什么会出问题?”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-22 02:36:53

问题出在我的Web应用程序防火墙(WAF)中。创建防火墙时,我添加了AWS-AWSManagedRulesCommonRuleSet集合。根据documentation of this rule set的说法,其中一条规则是:

代码语言:javascript
复制
GenericRFI_BODY - Inspects the values of the request body and blocks requests attempting to exploit RFI (Remote File Inclusion) in web applications. Examples include patterns like ://.

禁用此规则解决了我的问题。我现在可以成功地在我的数据库中发送并存储"https://“”。

但是,此规则代表最佳实践(或至少是良好实践),不应在不考虑风险的情况下禁用该规则。通过禁用此规则,我使我的端点容易受到远程文件包含攻击。因为我可以访问端点和Lambda函数定义,所以我可以将URL输入拆分为两个字段("https“和"www.youtube...")并使规则保持启用状态。对于遇到此问题的其他任何人,您必须权衡每种方法的易用性和风险。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64920512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档