【发布时间】:2012-07-28 03:48:27
【问题描述】:
我正在对我的 .net 3.5 mvc2 Web 应用程序应用安全性。 我的网站不包含任何用户身份验证,并且在 .js 文件中包含许多 ajax 调用
在我写的 .aspx 文件中
<%= Html.AntiForgeryToken() %>
在我写的 .js 文件函数中
$(document).ready(function() {
var token = $('input[name=__RequestVerificationToken]').val();
$.ajax({
url: "/Home/getCurrentLanguage/" + Math.random(),
cache: false,
type: "POST",
async: false,
data: {"__RequestVerificationToken":token},
success: function(data) {
if (data == "mr") {
alert("its Marathi");
} else {
alert("its English huh !!!");
}
return false;
},
error: function(data) {
alert("some Error" + data);
}
});
});
在我的控制器中我写了
[AcceptVerbs(HttpVerbs.Post), ValidateAntiForgeryToken]
public JsonResult getCurrentLanguage(string id)
{
return new JsonResult
{
Data = "mr"
};
}
这对我来说很好,
但我有 2 个问题
Q1。这是正确的方法吗?
如果我看到页面源,我找到了这段代码
<input name="__RequestVerificationToken" type="hidden" value="WFd+q5Mz0K4RHP7zrz+gsloXpr8ju8taxPJmrLO7kbPVYST9zzJZenNHBZqgamPE1KESEj5R0PbNA2c64o83Ao8w8z5JzwCo3zJKOKEQQHg8qSzClLdbkSIkAbfCF5R6BnT8gA==" />
但是当我创建外部 html 文件并复制 __RequestVerificationToken 的值并传入 ajax 调用时,我收到此错误
未提供所需的防伪令牌或无效。
然后
Q2。运行时如何知道该页面正在提供复制的 __RequestVerificationToken?
【问题讨论】:
标签: security asp.net-mvc-2 xss antiforgerytoken