위조 방지 기능이 있습니까?ASP의 토큰입니다.NET MVC는 모든 CSRF 공격을 방지합니까?
위조 방지 사용토큰을 사용하려면 각 요청이 유효한 토큰을 전달해야 하므로 웹 응용 프로그램에 데이터를 게시하는 단순 스크립트가 있는 악의적인 웹 페이지는 성공하지 못합니다.
하지만 악성 스크립트가 숨겨진 입력 필드에 위조 방지 토큰이 포함된 페이지를 다운로드하기 위해 (Ajax에 의해) 간단한 GET 요청을 먼저 만들고 추출하여 유효한 POST를 만드는 데 사용한다면 어떻게 될까요?
가능한가요, 아니면 제가 뭔가를 놓치고 있나요?
네, 이것만 하시면 됩니다.
각 보호된 페이지에서 새 토큰을 생성하는 경우<%= Html.AntiForgeryToken() %>
. 보호된 작업을 하여 확인하십시오.[ValidateAntiForgeryToken]
이것은 OWASP의 CSRF 방지 치트 시트에서 논의된 대로 싱크로나이저 토큰 패턴을 구현합니다.
스크립트가 허용 가능한 요청을 성공적으로 수행하려면 먼저 양식을 가져와 토큰을 읽은 다음 토큰을 게시해야 합니다.동일한 오리진 정책으로 인해 브라우저에서 허용되지 않습니다.사이트는 AJAX 스타일의 http 요청을 다른 사이트에 만들 수 없으며 자신에게만 요청할 수 있습니다.어떤 이유로 동일한 오리진 정책이 위반될 수 있는 경우 취약해집니다.
사이트 간 스크립팅 취약성이 있는 경우 공격자는 xss 취약성을 악용하여 동일한 오리진 정책에서 제공하는 보호를 회피할 수 있습니다(스크립트가 현재 사용자의 사이트에서 실행되고 있으므로 SOP가 성공함).그러면 주입된 스크립트가 토큰을 읽고 다시 제출할 수 있습니다.XSS를 통해 CSRF 보호를 통과하는 이 기술은 최근 일부 웜에서 일반적으로 사용되고 있습니다.기본적으로 XSS가 있는 경우 CSRF 보호는 시간 낭비이므로 두 가지 모두에 취약하지 않도록 해야 합니다.
또 다른 주의할 점은 플래시와 실버라이트입니다.두 기술 모두 동일한 오리진 정책에 가입하지 않고 도메인 간 정책 파일을 사용하여 원격 리소스에 대한 액세스를 제한합니다.Flash/Silverlight 스크립트는 사용자 사이트에서 도메인 간 정책 xml 파일을 게시하는 경우에만 사이트의 리소스에 액세스할 수 있습니다.이 파일을 게시할 경우 신뢰할 수 있는 타사 서버의 화이트리스트만 허용하고 *는 절대 허용하지 마십시오.
OWASP에서 CSRF에 대해 자세히 알아보기 참고 항목: XSS 예방 치트 시트
하지만 악성 스크립트가 숨겨진 입력 필드에 위조 방지 토큰이 포함된 페이지를 다운로드하고 추출하여 유효한 POST를 만드는 데 사용하기 위해 (AJAX에 의한) 간단한 GET 요청을 먼저 만든다면 어떻게 될까요?
예, 이것은 사실이지만, 브라우저로 끝나지 않는다면 이것은 CSRF 공격이 아닙니다.
브라우저가 종료되는 경우(예: 서버 측 코드의 HTTP 요청을 통한 스크래핑) 스크랩 코드는 CSRF 토큰을 얻을 수 있습니다.그러나 인증된 합법적인 사용자는 컴퓨터에 다른 토큰을 사용할 수 있습니다.스크레이퍼가 들어 올리는 토큰이 사용자에게 발급되는 토큰과 다르기 때문에 POST가 실패합니다.
비브라우저 스크립트의 게시를 중지하려면 다른 접근 방식을 사용하여 해당 스크립트가 사람인지 확인해야 합니다.
언급URL : https://stackoverflow.com/questions/1802500/does-antiforgerytoken-in-asp-net-mvc-prevent-against-all-csrf-attacks
'programing' 카테고리의 다른 글
모든 비트가 0이면 IEEE 부동 소수점의 값은 얼마입니까? (0) | 2023.09.01 |
---|---|
SQL Server 2012.예외: 보호된 메모리(MS.VS)를 읽거나 쓰려고 시도했습니다.OLE.Interop) (0) | 2023.09.01 |
j쿼리 AND 및 OR 연산자를 사용하여 속성별로 선택 (0) | 2023.09.01 |
아약스의 비동기적 특성을 처리하기 위한 아토믹 자바스크립트 작업이 있습니까? (0) | 2023.09.01 |
유효성 검사를 통해 양식을 여러 구성요소로 분할 (0) | 2023.09.01 |