Ruby on rails RESTful Rails控制器操作中的安全性-我是否应该始终使用respond_格式化块?

Ruby on rails RESTful Rails控制器操作中的安全性-我是否应该始终使用respond_格式化块?,ruby-on-rails,rest,Ruby On Rails,Rest,想知道我是否应该在所有控制器的所有操作中始终使用respond_to/format.xxx块。这是因为我意识到,对于只使用HTML响应格式(无响应块)的应用程序,我可以发送其他类型的请求(比如XML)并获得有效响应。这被认为是不安全的吗?我觉得是这样的,解决方案似乎是始终将respond_to/format.xxx块添加到每个控制器上的每个操作,即使您只是使用HTML。这样,任何非html请求都将被拒绝(应该如此) 那么,对于任何给定的操作,是否存在可以省略respond_to/format.x

想知道我是否应该在所有控制器的所有操作中始终使用respond_to/format.xxx块。这是因为我意识到,对于只使用HTML响应格式(无响应块)的应用程序,我可以发送其他类型的请求(比如XML)并获得有效响应。这被认为是不安全的吗?我觉得是这样的,解决方案似乎是始终将respond_to/format.xxx块添加到每个控制器上的每个操作,即使您只是使用HTML。这样,任何非html请求都将被拒绝(应该如此)

那么,对于任何给定的操作,是否存在可以省略respond_to/format.xxx位的情况?即使你只是在做一个简单的,标准的,纯HTML的应用程序?随着时间的推移,不同版本的rails代码生成器似乎对此产生了不同的影响。只是想知道什么是最佳实践,什么时候不用它就可以脱身


如果答案是“是的,你应该在每一个行动中始终使用它以确保安全”,那么在这一点上,它不会被视为样板吗?它是否应该以某种方式被推到rails中,这样我们就不必每次都反复地写出来?

我认为这不会对应用程序的安全性产生任何影响。假设入站HTTP请求格式良好,并且客户端经过身份验证以发出请求,那么作为服务器的您并不真正关心客户端接收到什么。事实上,客户机可能会传入您完全忽略的所有类型的头和参数,由客户机来处理意外的格式或错误。这是HTTP底层体系结构的组成部分

在任何情况下,您都可以将路由设置为不接受.format参数,在这种情况下,对.xml的请求将导致404或其他类型的错误


如果您只使用一种格式,请不要使用respond_to block,它会使代码中包含不必要的工件。

我认为这不会对应用程序的安全性产生任何影响。假设入站HTTP请求格式良好,并且客户端经过身份验证以发出请求,那么作为服务器的您并不真正关心客户端接收到什么。事实上,客户机可能会传入您完全忽略的所有类型的头和参数,由客户机来处理意外的格式或错误。这是HTTP底层体系结构的组成部分

在任何情况下,您都可以将路由设置为不接受.format参数,在这种情况下,对.xml的请求将导致404或其他类型的错误


如果您只使用一种格式,请不要使用respond_to块,它会使代码中包含不必要的工件。

是的,这是有道理的。如果只使用1种格式,则可以将其指定为默认格式,而不必担心使用respond_块。那么,这是否意味着,如果您使用的格式不止一种,那么您应该始终在每个控制器和每个操作中使用respond_来阻止?我只会在需要的地方使用它,但这只是我自己。是的,这是有意义的。如果只使用1种格式,则可以将其指定为默认格式,而不必担心使用respond_块。那么,这是否意味着,如果您使用的格式不止一种,那么您应该始终在每个控制器和每个操作中使用respond_来阻止?我只会在需要的地方使用它,但这只是我自己。