2014-12-18 3 views
0

내 응용 프로그램에서 요청을 위조하려하지만 위조 방지 비트를 얻는 방법을 알 수 없습니다. 웹 요청을 통해 실제로 호출 할 수있는 일부 레거시 코드를 지원해야합니다.컨트롤러에서 위조 방지 쿠키와 토큰을 생성하는 방법은 무엇입니까?

나는 Html 헬퍼를 날조하여 컨트롤러에서 토큰을 얻을 수있었습니다하지만 그것을 확인하려고 할 때 그것은 나에게이 예외 제공 : 안티 위조 토큰을 해독 할 수없는

합니다. 이 응용 프로그램이 웹 팜 또는 클러스터에서 호스팅되는 경우 모든 컴퓨터에서 동일한 버전의 ASP.NET 웹 페이지가 실행되고 구성에 명시 적 암호화 및 유효성 검사 키가 지정되어 있는지 확인하십시오. 사실 관련이 antiforgery 쿠키가 정확하지 않을 수도 경우

var antiForgeryTokenField = new HtmlHelper(new ViewContext(), new ViewPage()).AntiForgeryToken().ToString(); 
     var intermediate = antiForgeryTokenField.Substring(antiForgeryTokenField.IndexOf("value=\"") + 8); 
     var token = intermediate.Substring(0, intermediate.IndexOf("\"")); 

잘 모르겠어요 :

코드 토큰을 생성하는?

+0

이러한 호출에'Javascript '를 사용하고 있습니까? – melancia

+1

"위조 토큰"을 "위조"하려고합니다. 그게 가능할 것 같은데요? 솔직히 위조 지폐 토큰은 당신이하려는 일을 정확히 방지합니다. 어떻게 든 주위를 치장 할 수 있다면, 그들은 자신의 직업에 능숙하지 않을 것입니다. –

+0

아니요, 응용 프로그램 내에서이 작업을 수행하고 있습니다. 전에 그렇게하는 사람들에 대해 들었습니다. 너무 미친 것 같지 않습니다. – John

답변

0

당신은 일반적으로 양식의 POST 제출을받을 방법을 장식, 컨트롤러에, 순수한 HTML 또는 @Html.BeginForm(...) 및 통해 생성 여부에 관계없이 <form> 요소 내에

@Html.AntiForgeryToken() 

을 배치 할 것 속성 [ValidateAntiForgeryToken].

관련 문제