GET 공격과 POST 공격의 유일한 차이점은 피해자가 공격을 실행하는 방법입니다. 이제 은행이 POST를 사용하고 취약한 요청이 다음과 같다고 가정해 봅시다: CSRF 공격의 경우 혼란스러운 대리인이 브라우저입니다. 일반적인 웹 사이트에 로그인한 후 웹 사이트는 쿠키 내에서 브라우저에 인증 토큰을 발급합니다. 이후의 각 요청은 쿠키를 사이트로 다시 전송하여 귀하가 취하고 있는 모든 조치를 취할 수 있는 권한이 있음을 사이트에 알릴 수 있도록 합니다. 예를 들어 CSRF 공격은 피해자가 은행 계좌와 관련된 작업을 수행하도록 강요하여 온라인 뱅킹을 손상시키는 데 사용될 수 있습니다. CSRF는 XSS(교차 사이트 스크립팅)를 용이하게 할 수도 있습니다. 따라서 CSRF는 현재 OWASP 상위 10에 포함되지 않더라도 심각한 웹 응용 프로그램 보안 문제로 취급되어야 합니다. 다음은 태그를 사용하여 GET 요청에서 교차 사이트 요청 위조(CSRF)를 악용하는 방법에 대한 간단한 예입니다. 방법 충분히 만들어진 경우 – 감사합니다 Phill.우리가 이러한 기술으로부터 보호 할 수 없을 것 나에게 보인다. 저는 기업 환경에서 성능 테스트(보다 정확하게 스트레스 테스트) 팀과 함께 일했는데, 이들은 이러한 시나리오를 자동화하기 위해 Best Money Can Buy 도구를 중계하고 있었습니다. 그리고 우리는 항상 그것을 할 수있는 방법을 발견했습니다.@Travis 훌륭한 점을 가지고 있습니다. 당신이 필요로하는 (그리고 반복죄송합니다):1- form2- 그것을 구문 분석, 토큰 / canary3- 당신의 악한 요청을 게시이 일반 오래된 자바 스크립트를 사용하여 수행 할 수 있습니다 포함 HTML을 가져옵니다.

최신 브라우저를 사용하면 세 가지 요구 사항을 모두 충족할 수 있습니다. 이 고급 JavaScript 공격으로부터 보호하려면 참조자 헤더의 유효성을 검사할 수 있습니다. 그러나 다시, 플렉스 또는 실버 라이트를 사용하여, 당신은 그것을 벗을 수 있습니다. (또는 해당 헤더를 변경할 수 없습니다?) CSRF 취약점은 2001년부터 알려져 왔으며 경우에 따라 악용되었습니다. [3] 사용자의 IP 주소에서 수행되기 때문에 일부 웹 사이트 로그에 CSRF의 증거가 없을 수 있습니다. [2] 악용은 적어도 공개적으로 보고되지 않으며, 2007년 현재[4] 잘 문서화된 예는 거의 없었습니다: 은행의 웹 사이트가 POST 요청만 사용하는 경우 href 태그를 사용하여 악의적인 요청을 프레임화하는 것은 불가능합니다. 그러나 공격은 포함된 JavaScript를 자동으로 실행하여 태그로 전달될 수 있습니다. https://attacker.com/csrf.html 자체 제출 양식 제출 제출 제출 웹 양식의 입력 필드에 있는 이름 특성에는 제출하는 데이터가 저장되는 매개 변수의 이름이 포함됩니다. 따라서 양식에 alice@example.com 입력하고 제출 단추를 클릭하면 매개 변수 메일 값이 alice@example.com 설정되고 웹 서버는 다음과 같은 매개 변수 값 쌍을 받게 됩니다. 피해자의 이메일 주소 나 비밀번호를 변경하거나 무언가를 구입하는 것과 같은 상태 변경. 공격자가 응답을 받지 못하기 때문에 피해자가 데이터를 검색하도록 강요하는 것은 공격자에게 도움이 되지 않습니다. 따라서 CSRF 공격은 상태 변경 요청을 대상으로 합니다.

페이지가 로드되는 즉시 JavaScript 온로드 함수는 숨겨진 양식이 제출되도록 하여 POST 요청을 전송합니다. 양식에는 공격자가 설정한 두 개의 매개 변수와 해당 값이 포함됩니다. example.com POST 대상은 피해자의 쿠키를 포함하기 때문에 요청을 합법적인 것으로 식별합니다. 이봐 필. IE 7로 온라인으로 뱅킹을 할 때 도구로 이동하여 브라우저에서 모든 콘텐츠를 “항상”삭제하십시오 . 나는 모든 쿠키를 삭제하고 CSRF 공격을 방어하기 때문에이 작업을 수행한다고 가정해야합니까? CSRF 공격의 매우 개별적인 특성은 모든 솔루션에 적합한 단일 솔루션의 개발을 방해합니다. 그러나 가능한 CSRF 시나리오에 대해 보안을 위해 사용자 지정 보안 정책을 사용할 수 있습니다. www.example.com 두 가지 매개 변수가 포함된 GET 요청을 사용하여 자금 이체를 처리한다고 가정해 봅시다: 송금할 금액과 송금을 받을 사람의 식별자.