在Rails routing guide中,它说:
将GET和POST请求路由到单个操作具有安全隐患。通常,除非有充分的理由,否则应避免将所有动词都路由到动作。
使用相同的控制器操作响应GET和POST有什么安全隐患?
答案 0 :(得分:3)
除了安全性之外,如果单个操作现在处理多个方法,那么您执行控制器的操作就会相应地做出反应。使用路由指向特定操作比在操作中基于HTTP方法执行“路由”更为明显。希望它不会出错。
出于“安全”考虑:
写作时,在一个心境或另一个框架中更清楚;每个动作的单一目的导致方法具有更好的关注。
GET
和其他HTTP方法相反, POST
请求不会产生任何副作用。除了教条之外,与验证用户输入,执行其操作,相应地对成功或失败作出反应相比,呈现所请求的内容非常简单。即,使用用户数据处理相对复杂的写入操作,不要通过添加其他问题使其复杂化。
GET
响应通常被视为可缓存,与大多数其他响应相反。我认为可能有一些有趣的东西可以探索安全性。
参数可能存在一些实际的技术安全问题(例如:user_id)和CSRF攻击(rails为非GET
请求使用CSRF令牌的原因之一)但我认为存在足够的潜在陷阱无论如何,在写一个应用程序,该笔记是有效的;为了减少你所采取的行动数量,不值得采取行动。