2013-02-08 8 views
2

자세한 내용은 AntiForgery.Validate() 메서드 오류 (양식 토큰이 유효성을 검사하지 않을 때)를보고이 사이트를 방문한 후 자세한 내용을 보려면 http://msdn.microsoft.com/en-us/library/system.web.helpers.antiforgery(v=vs.111).aspx 을 참조하십시오. 과거.내 페이지 중 하나에서 WebMatrix의 AntiForgery.Validate Helper를 잘못 사용 했습니까?

나는 AntiForgery.GetHTML(); 및 AntiForgery.Validate(); 로그인 페이지에 있지만, 거기에 넣는 것이 합당한 지 확실하지 않습니다. 로그인하지 않고 사용자는 항상 ""(빈 문자열)이므로 원래는 AntiForgery 클래스를 사용하는 것이 실제로하는 것보다 더 많이한다고 생각했습니다. 그리고 따라서, 내 질문입니다 :

위의 연습을 수행하는 유일한 보안 검사는 단순히 (if (IsPost) 지점에 AntiForgery.Validate();를 두는 것으로 가정하는 것입니다) 양식을 제출 한 사용자는 페이지를로드 할 때 로그인 한 사용자와 동일합니까?

그렇다면이 클래스를이 방식으로 사용하면 로그인 페이지에 아무 것도 없다고 가정 할 수 있습니까?

답변

1

당신이 코드 플렉스에 대한 소스 코드를 보면, AntiForgeryValidateTokens 방법은 몇 가지 정체성과 이름 확인을 수행, TokenValidator를 사용 AntiForgeryWorker를 사용합니다. 던져진 예외를 얻지 못한다면 유효성 검사를 어느 정도하고 있지만 사용자 이름으로 ""사용하고있을 것입니다.

if (!String.Equals(fieldToken.Username, currentUsername, (useCaseSensitiveUsernameComparison) ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase)) 
{ 
    throw HttpAntiForgeryException.CreateUsernameMismatchException(fieldToken.Username, currentUsername); 
} 

그러나 로그인 페이지를 "위조"하는 용도는 무엇입니까? 위조자가 제출할 자격 증명을 알고 있으면 스스로 로그인 할 수 있습니다. AntiForgery가 여기에서 모든 잠재력을 발휘하지 못하더라도 문제가되지 않을 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 하지만 진짜 질문은 다음과 같습니다. 사용자 체크 이외의 작업은 무엇입니까 (있다면) 무엇입니까? 그리고 로그인 페이지에 포함시켜야합니까? 어떤 일이 발생하면 페이지가 너무 오래 유휴 상태가되면 YSOD를 얻습니다. 난 그냥 "AntiFogery.Validate();" 방법은 사용자가 로그인했는지 확인하고 내 자격 증명을 다시 묻는 내 페이지 부분 뒤에옵니다. – VoidKing

관련 문제