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

时间:2010-09-03 22:15:03

标签: ruby-on-rails rest

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

那么,是否有可能为任何给定的操作省略respond_to / format.xxx位?即使您只是在做一个简单的,标准的,仅限HTML的应用程序?看起来不同版本的rails代码生成器随着时间的推移产生了不同的东西。只是想知道什么是最佳实践,什么时候你可以逃脱而不使用它。

如果答案是“是的,你应该在每一个行动中一直使用它来保证安全”,那么那时它不会被视为样板吗?它不应该以某种方式被推入轨道,所以我们不必每次都一遍又一遍地写出来吗?

1 个答案:

答案 0 :(得分:1)

我认为这不会对您的应用程序的安全性产生任何影响。假设入站HTTP请求格式正确并且客户端经过身份验证以发出请求,那么您作为服务器并不真正关心客户端接收的内容。实际上,客户端可能会传递您完全忽略的各种标头和参数,并且由客户端来处理意外的格式或错误。这是HTTP底层架构不可或缺的一部分。

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

如果你只使用一种格式,不要使用respond_to块,它会使代码混乱,带来不必要的伪像。