0
我有我的應用程序使用jQuery Ajax帖子來保存和更新記錄。Jquery Ajax調用ASP.NET MVC中的安全性
我所有的職位透過JSON.stringify這樣的:
jQuery.ajax({
url: '@Url.Content("~/Vendor/SaveProvider")/',
type: 'POST',
contentType: 'application/json',
dataType: 'json',
data: JSON.stringify(
{
jsonProvider: ko.toJSON(appViewModel.provider),
jsonAddresses: ko.toJSON(appViewModel.addresses),
jsonContacts: ko.toJSON(appViewModel.contacts)
}),
我讀的是ASP.NET MVC配備了ValidateAntiForgeryToken過濾器控制器的電話,但我無法找到如何的任何資源使它工作使用jQuery Ajax和JSON.stringify ....
所以,我來到了這個想法,並想知道,如果它的確定...
我知道jQuery.Ajax讓您發送額外的頭信息離子,所以我會做到這一點:
- 將創建一個自定義過濾器
- 這個過濾器會檢查我的當前會話不爲空,將retrive一個「sessionlogid」(GUID),這是當用戶創建首先登錄到Web應用程序。
- 將獲得使用Jquery Ajax post發送的包含 「sessionlogid」的自定義標頭值,並將查看它是否具有相同的值。
- 如果它的相同值會讓控制器去,否則會發送一個錯誤。
我的過濾器應該是這樣的:
public class ValidateAjaxSessionAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.HttpContext.Request.Headers["sessionlogid"] == null ||
filterContext.HttpContext.Request.Headers["sessionlogid"] != Session["sessionlogid"])
{
throw new ArgumentNullException("Invalid Request", new Exception());
}
}
}
這是否有道理或有保護的應用程序沒有更好的辦法?
感謝您的幫助!
你爲什麼這樣做字符串化和剛剛離開原樣? – Omu 2012-07-26 22:53:30
因爲我使用敲除,似乎是控制器獲取信息的唯一方法。 – VAAA 2012-07-27 01:36:16