【问题标题】:asp.net mvc - how to stop action method being invokedasp.net mvc - 如何停止正在调用的操作方法
【发布时间】:2013-05-27 12:53:22
【问题描述】:

我正在开发 asp.net mvc 应用程序。我很少有返回 json 的操作。这些操作是使用 Jquery ajax 调用来调用的。

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

有什么方法可以阻止人们直接访问操作?

谢谢。

【问题讨论】:

  • 您可以拒绝 HttpGet 用于 JSON 操作方法,只允许 Post。还可以尝试 MVC 中的 AntiForgeryToken 之类的东西。
  • 如果这些请求在你的网络应用中使用并公开显示,那么直接调用这些服务或通过你的网络应用调用这些服务没有区别。
  • 我对@9​​87654325@了解不多。但是找到了很多链接来实现这一点。我希望下面的链接对你有帮助。 ReferenceStackoverflow link
  • 谢谢大家的cmets

标签: asp.net-mvc-3


【解决方案1】:

我认为你可以使用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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2014-12-25
    • 2012-05-15
    • 1970-01-01
    • 2020-01-10
    • 2013-07-19
    相关资源
    最近更新 更多