将GET和POST请求路由到同一操作的安全隐患

时间:2014-04-03 11:01:39

标签: ruby-on-rails

Rails routing guide中,它说:

  

将GET和POST请求路由到单个操作具有安全隐患。通常,除非有充分的理由,否则应避免将所有动词都路由到动作。

使用相同的控制器操作响应GET和POST有什么安全隐患?

1 个答案:

答案 0 :(得分:3)

除了安全性之外,如果单个操作现在处理多个方法,那么您执行控制器的操作就会相应地做出反应。使用路由指向特定操作比在操作中基于HTTP方法执行“路由”更为明显。希望它不会出错。

出于“安全”考虑:

  • 写作时,在一个心境或另一个框架中更清楚;每个动作的单一目的导致方法具有更好的关注。

  • GET和其他HTTP方法相反,
  • POST请求不会产生任何副作用。除了教条之外,与验证用户输入,执行其操作,相应地对成功或失败作出反应相比,呈现所请求的内容非常简单。即,使用用户数据处理相对复杂的写入操作,不要通过添加其他问题使其复杂化。

  • GET响应通常被视为可缓存,与大多数其他响应相反。我认为可能有一些有趣的东西可以探索安全性。

参数可能存在一些实际的技术安全问题(例如:user_id)和CSRF攻击(rails为非GET请求使用CSRF令牌的原因之一)但我认为存在足够的潜在陷阱无论如何,在写一个应用程序,该笔记是有效的;为了减少你所采取的行动数量,不值得采取行动。