저는 웹 보안에 대해 처음 접했고, 다른 공격 경로에 대해 더 많이 읽었을 때, 제 마음은 처음부터 허락한다는 것을 깨닫습니다. 마치 웹이 깨진 보안 모델로 설계되어 취약한 것처럼 보입니다.브라우저에서 CSRF를 허용하는 이유는 무엇입니까?
모호하고 부정확 한 정보에 놀랐습니다. 예를 들어, 처음에는 Single Origin Policy가 꽤 좋아 보인다. 그런 다음 XHR에만 적용된다는 것을 알았지 만, 실제로 CSR은 고전적인 CSRF 공격 인 XHR 교차 출처 POST를 실제로 방지하지 못합니다. 다행히 계속 읽고 있습니다.
서버가 요청이 올바른 위치에서 오는 지 확인하는 데 사용할 수있는 Origin 헤더가 있지만 브라우저간에 불일치하게 설정되며 설정되지 않은 경우에는 사용할 수 없습니다 같은 출처 요청 또는 특정 브라우저 (어쩌면 IMG 태그)에서 가져 오지 못했던 요청 유형 때문인지 확실히 확신 할 수 있습니다. 계속 읽으세요.
오른쪽 웨이는 세션 쿠키에 CSRF 토큰을 설정하고 해당 토큰을 양식/링크에 추가 한 다음 제출시 서버 측과 비교합니다. 이론적으로 (이 질문의 목적을 위해 모든 XSS 공격을 제외시킵니다.) 다른 탭의 CSRF 시도는 쿠키를 포함하는 양식으로 POST 요청을 할 수 있지만 양식 입력 요소가 일치하는 토큰으로 설정되지 않았습니다 (왜냐하면 쿠키에서 토큰을 읽을 수 없으므로) 서버가 요청을 거부합니다. 작동하지만 kludgy, 확인 절대 잊지 절대!
잠시 생각해 보니 여기 내 질문 - 브라우저가 쿠키의 원본이 아닌 페이지에서 발생한 요청으로 세션 쿠키를 보내는 이유는 무엇입니까? 내 말은
, 브라우저는 좋은 이유 쿠키를 에 다른 도메인을 전송을 거부하지만, 서로 다른 기원에서 그들에게 을 보내 매우 행복 할 것인가? 그들이하지 않으면 물건이 깨지겠습니까? 그것은 CSRF에 대한 견고한 방어가 될 것인데, 서버가 어쨌든 무엇을하고 있는지를 요구하고 유효한 세션 쿠키를 확인해야합니까?편집 : 상황을 개선하기위한 시도 일 수 있습니까? https://tools.ietf.org/html/draft-west-origin-cookies-01
많은 것들이 깨질 것입니다. 예를 들어 이러한 모든 분석 및 광고 스크립트. – Thilo
브라우저가 처음부터 CSRF가 수행되도록 설계된 것처럼 보이지 않습니다. 이미 이미 많은 웹 사이트가있는 지점에서 CSRF가 발견되었습니다. 확실히 10 이상. 사실 이후에 규칙을 변경하고 규칙 변경을 수용하기 위해 모든 웹 사이트가 변경 될 것으로 기대하고 있습니다. 특히 사이트 간 요청의 * 많은 *이 유해한 영향을 미치지 않고 원하는 효과 만있을 때 특히 많이 기대됩니다. –
그것은 다소 부적합합니다. 웹 사이트는 스스로를 보호 할 책임이 있으며 "올바르게"설계/개발/유지 관리 된 브라우저에 의존하지 마십시오. 이것이 CSRF 토큰이 (kludgy 일지라도) 필요한 이유입니다.CSRF를 웹 사이트 아키텍처에 구축하는 것이 좋습니다. 이미 CSRF가있는 프레임 워크를 사용하는 것이 좋습니다. 그런 식으로 항상 거기에 있고 항상 확인합니다 (프레임 워크를 올바르게 사용한다고 가정하십시오). – LaJmOn