我正在研究 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);
}