내 .net 3.5 mvc2 웹 응용 프로그램에 보안을 적용하고 있습니다. 내 웹 사이트는 사용자 인증을 포함하고 내가AntiForgeryToken은 어떻게 작동합니까?
$(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);
}
});
});
을 쓴 내의 .js 파일 기능에서
<%= Html.AntiForgeryToken() %>
을 쓴 내에서 .aspx 파일에서의 .js 파일
을 많은 아약스 호출을 구성하지 않습니다 내 컨트롤러에서
나는이 0 나를 위해 잘 작동
[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 호출에 통과 할 때, 나는이 오류를 얻고 것은
A는 안티 필요 - 위조 토큰이 제공되지 않았거나 유효하지 않습니다. 다음
질문 2. 런타임에서이 페이지가 복사 된 __RequestVerificationToken을 제공하고 있음을 어떻게 알 수 있습니까?
브라우저의 쿠키가 __RequestVerificationToken을 유지하기 때문에 질문 2의 답을 얻었습니다. 그래도 웹 페이지에서 __RequestVerificationToken을 복사했지만 예외가 발생했습니다. 첫 번째 2 paras +1, 감사합니다. Q1의 대답을 기대하고, 내 접근 방식이 맞습니까? 또는 나는 더 많은 것을해야한다. –
@ d.Siva. 값이 동적 인 경우 (다른 브라우저에서 해당 페이지를 방문하여 시도하십시오) 올바르게 점검 한 후 제대로 작동하는지 확인하십시오. – rook
나는 크롬에서 테스트를 마쳤습니다. 즉, 파이어 폭스와 그 작업은이 접근법이 정확하다고 생각합니다.이 대답을 받아 들였습니다. –