jbo*_*the 50 apollo graphql graphql-js
如何使用以下查询阻止对Apollo服务器的嵌套攻击:
{
authors {
firstName
posts {
title
author {
firstName
posts{
title
author {
firstName
posts {
title
[n author]
[n post]
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
换句话说,如何限制查询中提交的递归数量?这可能是潜在的服务器漏洞.
stu*_*ilo 54
截至撰写本文时,GraphQL-JS或Apollo Server中没有内置功能来处理这一问题,但随着GraphQL变得越来越流行,它肯定会有一个简单的解决方案.这个问题可以通过堆栈的多个层次上的几种方法来解决,并且还应该始终与速率限制相结合,以便人们不能向您的服务器发送太多查询(这也是REST的潜在问题).
我将列出我能想到的所有不同方法,并且我将尽力使这个答案保持最新,因为这些解决方案是在各种GraphQL服务器中实现的.其中一些非常简单,有些则更复杂.
(1)和(2)特别是默认情况下每个GraphQL服务器都应具有的功能,特别是因为许多新开发人员可能不会意识到这些问题.(3)仅适用于某些类型的应用程序,但在有非常严格的性能或安全要求时可能是一个不错的选择.
归档时间: |
|
查看次数: |
6902 次 |
最近记录: |