Rails - 如何拒绝格式错误的params - ActionDispatch :: ParamsParser :: ParseError

时间:2015-08-17 07:55:05

标签: ruby-on-rails parameters httpwebresponse

为了提高我的应用程序的安全性,我希望能够在我的应用程序控制器中检查收到的参数。

ActionDispatch :: ParamsParser :: ParseError

例如:

"unexpected token at" ...
params 
  {
    string: "string good formated",
    interger1: 12,
    intergerBad:34/../WEB-INF/web.xml340
  }

当我收到它时,我收到错误的格式化json错误,但我想在我的应用程序控制器中处理此错误。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

你想要达到的目标是棘手的。参数只是一个String。它可能包含几种不同类型的数据:原始值,如字符串或整数,甚至是复杂数据。

但是,它们实际上意味着一种业务逻辑,它取决于您的应用程序以及您给出的含义。考虑到这种解释,甚至" Bad formatted"参数在您的案例业务定义中。

我告诉你的原因是因为你正在做出假设,你可以在ApplicationController中检查这些参数,但是你可能检查它们的地方是使用参数的特定控制器。

实际上,相同的:id参数可以表示用户控制器中的整数和Whatever控制器中的字符串。

ApplicationController不是检查它的最佳位置的另一个原因是因为你处于一个中间位置。如果你想挤压性能甚至不加载整个Rails堆栈,那么使用中间件。它快速,便宜且便宜,但作为ApplicationController,它要求您事先知道每个参数中将存储哪种数据。可能存在模糊的参数。

相反,您可以在您希望使用该值的特定控制器中检查它们(通常是这样)。

在我看来,你正在寻找一个解决方案来统治它们,不幸的是,应用程序开发可能需要一些额外的工作量来定制。

如果您确实有一些超敏感参数,您可以在请求进入后立即进行明确验证,然后使用机架中间件。