asp.net mvc - 如何停止被调用的动作方法

时间:2013-05-27 12:53:23

标签: asp.net-mvc-3

我正在研究asp.net mvc应用程序。我几乎没有回复json的行动。使用Jquery ajax调用调用这些操作。

本网站不需要身份验证。任何匿名用户都可以访问该网站。我担心人们只是调用动作并执行DOS攻击。

我们有什么方法可以阻止人们直接访问该行动?

谢谢。

1 个答案:

答案 0 :(得分:4)

我认为您可以使用AntiForgeryToken

在您的视图中,您需要令牌以便JavaScript可用。添加以下行,上面的javascript只使用常见的HTML-Helper。

@Html.AntiForgeryToken()

将其附加到您的ajax请求中,以便您不必重复自己

$(document).ready(function () {
    var securityToken = $('[name=__RequestVerificationToken]').val();
    $('body').bind('ajaxSend', function (elm, xhr, s) {
        if (s.type == 'POST' && typeof securityToken != 'undefined') {
            if (s.data.length > 0) {
                s.data += "&__RequestVerificationToken=" + encodeURIComponent(securityToken);
            }
            else {
                s.data = "__RequestVerificationToken=" + encodeURIComponent(securityToken);
            }
        }
    });
});

在您的控制器中只需添加标准的ASP.Net MVC Anti-CSRF机制。像

[HttpPost]
[Authorize]
[ValidateAntiForgeryToken]
public JsonResult YourMethod(string param)
{
    // do whatever
    return Json(true);
}