我正在研究 asp.net mvc 应用程序。我很少有返回 json 的操作。这些操作是使用 Jquery ajax 调用来调用的。
该网站不需要身份验证。任何匿名用户都可以访问该网站。我担心人们只是调用这些动作并执行 DOS 攻击。
有什么方法可以阻止人们直接访问该操作?
谢谢你。
我正在研究 asp.net mvc 应用程序。我很少有返回 json 的操作。这些操作是使用 Jquery ajax 调用来调用的。
该网站不需要身份验证。任何匿名用户都可以访问该网站。我担心人们只是调用这些动作并执行 DOS 攻击。
有什么方法可以阻止人们直接访问该操作?
谢谢你。
我认为你可以使用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);
}