什么是更好的最佳实践 - 允许 API 上的所有查询参数?还是使用白名单?

What's a better best practice - allow all query params on an API? Or use a whitelist?

我们有一个 REST API 可以混淆下游 API。

允许所有查询参数通过原始请求(并将它们转发到下游 API 以防它们使用它们)是否更好?或者提供一个查询参数白名单,只允许特定的白名单参数通过?

我认为列入白名单的方法在安全性方面可能会稍微好一些。但是,为了维护,传递在原始请求中发送的所有查询参数会更好。

我一直倾向于通过,但想看看其他人认为什么是最佳实践。

谢谢,

我的假设是,提供允许的查询参数的白名单可能会稍微安全一些。但是,通过

允许所有查询参数会更容易维护

最好和推荐的方法是对参数使用过滤器并且只允许你需要的,例如。 params.require(:user).permit(:name, :age)。 有关更多信息,请参见 rubydoc.