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

보기: 37886|회답: 4

[ASP.NET] CSRF 공격을 방지하기 위해 AntiForgeryToken과 함께 mvc ajax를 사용했습니다

[링크 복사]
게시됨 2017. 11. 2. 오전 10:06:29 | | | |
프로젝트 내 서버로 보내는 ajax 게시물 데이터에 위조 방지 태그가 부착되어 있지 않아 CSRF 공격이 발생하는 경우가 자주 관찰되며, Html.AntiForgeryToken()을 추가하면 MVC Asp.net 위조 방지 표시를 쉽게 추가할 수 있습니다.
Html.AntiForgeryToken()은 쿠키와 입력에 저장된 암호화된 문자열 쌍을 생성합니다. 또한 Ajax 게시물에 AntiForgeryToken도 도입했습니다
MVC의 Html.AntiForgeryToken()은 사이트 간 요청 위조(CSRF: Cross-site request fogery) 공격을 방지하기 위한 조치로, XSS(XSS, CSS: Cross-Site-Script라고도 함)와는 다릅니다. XSS는 일반적으로 사이트 내 신뢰할 수 있는 사용자를 이용해 악성 스크립트 코드를 네트워크에 삽입해 공격합니다. 반면 CSRF는 의사 신뢰 사용자가 웹사이트를 공격하는 것입니다.
먼저, 코드를 다음과 같이 살펴보겠습니다:

실행 시 생성된 html 코드는 다음과 같습니다:



아래 그림과 같이 테스트 버튼을 눌러 위조 방지 쿠키가 있는지 확인해 보겠습니다:



컨트롤러 내 코드는 다음과 같습니다:

각 컨트롤러에 ValidateAntiForgeryToken 기능을 추가해야 합니다. 사용자가 AntiForgeryToken을 가져오지 않을 경우, 다음과 같이 친근한 프롬프트를 사용자에게 반환할 수 있습니다:







이전의:asp.net mvc BindAttribute 바인딩 기능
다음:CMMI와 애자일의 비교 중 하나: 두 가지의 본질적인 차이점
 집주인| 게시됨 2017. 11. 2. 오전 11:05:37 |
위 방법에서는 기능을 직접 맞춤화해야 하며, 기본 ValidateAntiForgeryToken 기능은 사용할 수 없습니다

기본 기능은 형태 형태의 값을 받아 판단하는 것입니다



저는 위조 방지 검증이 포함된 jQuery로 POST 메서드를 캡슐화했으며, 코드는 다음과 같습니다:



 집주인| 게시됨 2017. 11. 2. 오전 11:17:36 |
IsAjaxRequest 요청이 아약스 요청인지 판단하기 위해

본질적으로 IsAjaxRequest()는 헤더에 X-Requested-With 필드가 있는지, 그리고 그것이 XMLHttpRequest인지 결정합니다

문서를 보는 것은 소용없고, 소스 코드에 따라 다릅니다.
 집주인| 게시됨 2021. 2. 20. 오후 7:22:26 |
ASP.NET CSRF 공격 Ajax의 캡슐화 요청
https://www.itsvse.com/thread-8077-1-1.html
게시됨 2021. 12. 9. 오후 6:37:56 |
테스트테스트테스트
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com