이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 45075|회답: 7

[ASP.NET] ASP.NET CSRF 공격 Ajax의 캡슐화 요청

[링크 복사]
2019-9-12 09:42:54에 게시됨 | | | |
CSRF란 무엇인가요?

CSRF(교차 사이트 요청 위조), 일명 원클릭 공격/세션 라이딩, 중국어 약자: CSRF/XSRF. CSRF(교차 사이트 요청 위조)는 2007년 인터넷에서 상위 20대 보안 위험 중 하나로 선정된 네트워크 공격 방법입니다. SQL 스크립트 인젝션이나 사이트 간 도메인 스크립트 공격과 같은 다른 보안 위험도 최근 몇 년간 잘 알려졌으며, 많은 웹사이트들이 이에 대해 방어해왔습니다. 하지만 CSRF는 여전히 대부분의 사람들에게 낯선 개념입니다. 가장 유명한 Gmail조차도 2007년 말에 CSRF 취약점이 있었고, 해킹당해 Gmail 사용자에게 막대한 손실을 입혔습니다.

CSRF는 무엇을 할 수 있을까요?

CSRF 공격은 이런 식으로 이해할 수 있습니다: 공격자가 당신의 신원을 훔쳐 당신의 이름으로 악성 요청을 보냈습니다. CSRF는 이메일 발송, 메시지 발송, 계정 탈취, 심지어 상품 구매 및 가상 화폐 이체 등 다양한 일을 할 수 있습니다...... 발생하는 문제로는 개인 프라이버시 유출과 재산 보안이 포함됩니다.

ASP.NET MVC 위조 방지 토큰 위조 방지 마크

ASP.NET MVC에서는 @Html.AntiForgeryToken()이 뷰 페이지에서 사용될 때마다 폼 토큰과 쿠키 토큰이 기본적으로 자동으로 생성됩니다. 하지만 백그라운드에서 수동 검색을 하려면 System.Web.Helpers.AntiForgery 클래스를 사용해야 하며, 소스 코드를 보고 싶어 하는 친구들은 @Html.AntiForgeryToken() 내부 호출 방식이 AntiForgery 클래스와 동일하다는 것을 알게 될 것입니다.

주로 두 가지 정적 방법으로 해당 폼과 쿠키 토큰을 얻는 데 사용됩니다: AntiForgery.GetHtml() 또는 AntiForgery.GetTokens(string oldCookieToken, out string newCookieToken, out string formToken). 하지만 GetHtml 메서드가 호출되면 해당 쿠키 토큰이 자동으로 생성되고, 그 후 토큰 값 숨겨진 필드가 포함된 HTML 코드가 직접 반환되며, 반환된 값은 다음과 같은 형태로 나옵니다:

<input name="__RequestVerificationToken" type="hidden" value="8_nUk_3z0svQr9qcvRBi9SWMZ2-SYmuy9kRe9OgRobGULkb2Z4JZxRZFhR0ndeoy9hmDLDru7MFk-W4xrnL5z5T6VbkfXK7fyRk-egQBGm41">

숨겨진 필드의 이름은 일반적으로 "__RequestVerificationToken"로 고정되어 있으며, 값은 암호화된 보안 토큰입니다. 이 숨겨진 필드는 보통 제출할 양식에 배치되며, 최종 제출은 쿠키 토큰과 대조됩니다.

GetTokens 메서드를 사용하면 해당 매개변수를 입력한 후 암호화된 폼과 쿠키 토큰을 얻을 수 있지만, 여기서는 해당 값을 직접 저장해야 합니다.

다음으로, 주로 AJAX를 통해 AntiForgeryToken을 수동으로 업데이트하는 방법을 소개하겠습니다.

패키지 코드:



테스트 코드:



우리는 ajax 요청을 보낼 때 아래 그림과 같이 __RequestVerificationToken 매개변수가 자동으로 포함된다는 것을 발견했습니다:







이전의:Windows CMD 역사 명령어 역사 튜토리얼 보기
다음:Azure DevOps 소개
 집주인| 2019-9-25 18:09:46에 게시됨 |
2019-11-10 15:06:37에 게시됨 |
배경 조사 계획 작성하지 않았어? 헤더 내부의 백그라운드 처리는 헤더가 없는 백그라운드 처리와 다릅니다
 집주인| 2019-11-21 10:38:40에 게시됨 |
단칭청이 2019-11-10 15:06에 게시함
배경 조사 계획 작성하지 않았어? 헤더 내부의 백그라운드 처리는 헤더가 없는 백그라운드 처리와 다릅니다

음, 필터를 다시 써야겠네요
 집주인| 2021-2-20 19:22:14에 게시됨 |
CSRF 공격을 방지하기 위해 AntiForgeryToken과 함께 mvc ajax를 사용했습니다
https://www.itsvse.com/thread-4207-1-1.html
2021-12-9 18:41:29에 게시됨 |
테스트, 테스트 테스트, 테스트 테스트
 집주인| 2022-4-17 12:59:39에 게시됨 |
 집주인| 2024-9-26 15:57:52에 게시됨 |
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com