通过HTTP GET请求激活

时间:2013-12-12 16:07:37

标签: asp.net asp.net-mvc security

在我的ASP.Net MVC网站上,无论何时用户注册,管理员都应激活他/她的帐户。在我看来,我正在为此创建简单的链接:

@Html.ActionLink("activate", "user", new { id = item.ID })"

我通常会向控制器创建一个带有@Html.AntiForgeryToken()POST的表单。但是,我认为可以通过HTTP GET执行此操作,因为我们正在为admin角色的用户执行此操作。我应该使用POST方法还是继续使用HTTP GET而只是id字段?

2 个答案:

答案 0 :(得分:1)

  

我认为可以通过HTTP GET执行此操作,因为我们正在为管理员角色的用户执行此操作。

不。如果有人将/user/activate/42的链接发送给您的管理员并点击了该链接,则他只是激活了一位用户。

除了安全性之外,请阅读When should I use GET or POST method? What's the difference between them?以了解对HTTP级别的影响,这也涉及浏览器实现(缓存,重新发布警告以及列表继续)。

答案 1 :(得分:1)

GET请求永远不应该改变系统的状态。它应该保持系统不变。您不希望任何人通过发出GET请求来批准用户,因为它会使系统受到攻击。 GET请求也不应该用于传递数据。

您应该理想地使用PUT请求。如果您不能使用PUT,那么POST就可以了。