我需要帮助来阻止CSRF到我从jQuery ajax调用的webservice。 我对CSRF知之甚少,需要任何示例代码来解决这个安全问题。 我在这里给了soem样本: 我的webmethod(asmx)将是这样的:
[WebMethod]
public Product GetProducts(string category)
{
Product product = new Product
{
Name = "Product1",
Price = "1500",
Size = "A1"
};
return product;
}
public class Product
{
public string Name { get; set; }
public string Price { get; set; }
public string Size { get; set; }
}
这个web方法我在某些事件中从jQuery Ajax调用(让我们说点击一些控件)
$(document).ready(function () {
$("#ajaxTest").click(function () {
GetProducts();
});
});
GetProducts = function (category) {
$.ajax(
{
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/Service/Products.asmx/GetProducts",
data: "{ category: '" + category + "' }",
dataType: "json",
success: function (data) {
$("#product").text(data.d.Name + " " + data.d.Price + " " + data.d.Size);
},
});
}
现在我如何在这里实施CSRF预防? 不确定我的问题是否清楚,如果您需要更多详细信息,请告诉我。如果您有任何意见,请告知我们。
提前致谢..!
-Sharath
答案 0 :(得分:1)
最好的办法是使用同步器令牌模式。这仅仅意味着产生随机挑战"与用户当前会话相关联的令牌。然后将这些挑战令牌插入与敏感服务器端操作相关联的HTML表单和链接中。
由于您正在运行ASP.NET,因此可以使用ViewState功能。在此处查看更多信息:https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet