2
我正在處理asp.net mvc應用程序。我有幾個返回json的動作。這些操作使用Jquery ajax調用進行調用。asp.net mvc - 如何停止正在調用的操作方法
本網站不需要驗證。任何匿名用戶都可以訪問該網站。我擔心人們只是在調用這些操作並執行DOS攻擊。
有什麼辦法可以阻止人們直接訪問該操作?
謝謝。
我正在處理asp.net mvc應用程序。我有幾個返回json的動作。這些操作使用Jquery ajax調用進行調用。asp.net mvc - 如何停止正在調用的操作方法
本網站不需要驗證。任何匿名用戶都可以訪問該網站。我擔心人們只是在調用這些操作並執行DOS攻擊。
有什麼辦法可以阻止人們直接訪問該操作?
謝謝。
我認爲你可以使用AntiForgeryToken
,
在你看來,你所需要的令牌,以便它是提供給JavaScript.Add以下線以上的JavaScript只是使用普通的HTML助手。
@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反CSRF機制。像
[HttpPost]
[Authorize]
[ValidateAntiForgeryToken]
public JsonResult YourMethod(string param)
{
// do whatever
return Json(true);
}
你可以拒絕'HttpGet'爲JSON Action方法並且只允許'Post'。在MVC中嘗試一些類似AntiForgeryToken的事情。 – Saravanan
如果這些請求在您的Web應用程序中使用並公開顯示,則直接或通過您的Web應用程序調用這些服務沒有任何區別。 –
我對'AntiForgery'沒有多少了解。但是發現了很多鏈接來實現這一點。我希望下面的鏈接將幫助你。 [參考](http://dotnetslackers.com/articles/aspnet/Protect-ASP-NET-MVC-3-Applications-Using-AntiForgery-Helpers.aspx)(http://stackoverflow.com/questions)/1402770 /什麼是使用反僞造令牌鹽) – Amit