>  Q&A  >  본문

CSRF에 대해 알아보기

"챌린지 토큰"을 사용하면 어떤 종류의 예방이 추가되는지 이해가 되지 않습니다. 어떤 가치를 무엇과 비교해야 합니까?

OWASP에서:

일반적으로 개발자에게 필요한 것은 이 토큰을 한 번 생성하세요. 현재 세션. 초기화 후 이 토큰의 생성은 다음과 같습니다. 세션에 저장되어 사용됨 이후의 각 요청에 대해 세션이 만료되었습니다.

과정을 제대로 이해하면 이렇게 됩니다.

http://example.com에 로그인하고 이 임의의 토큰이 포함된 세션/쿠키를 만듭니다. 그러면 각 양식에는 양식 제출 시 세션/쿠키와 비교되는 세션의 임의 값도 포함하는 숨겨진 입력이 포함됩니다.

하지만 이것이 무엇을 성취할 수 있을까요? 세션 데이터를 가져와 페이지에 넣고 정확히 동일한 세션 데이터와 비교하지 않습니까? 순환논리처럼 보입니다. 이 기사에서는 "동일 출처 정책"을 따르는 것에 대해 계속 이야기하지만 모든 CSRF 공격은 사용자에게서 시작되고 사용자가 의도하지 않은 작업을 수행하도록 속이기 때문에 이는 의미가 없습니다.

토큰을 모든 URL에 쿼리 문자열로 추가하는 것 외에 다른 옵션이 있나요? 매우 보기 흉하고 비실용적이며 사용자가 북마크를 지정하기 어렵게 만듭니다.

P粉056618053P粉056618053332일 전622

모든 응답(2)나는 대답할 것이다

  • P粉794851975

    P粉7948519752023-10-24 11:47:30

    CSRF를 비유로 설명 - 예:

    • 열쇠로 집 현관문을 엽니다.
    • 들어가기 전에 이웃들과 이야기 나눠보세요
    • 이 대화를 나누는 동안 문을 잠그지 않은 채 들어오시기 바랍니다.
    • 그들은 들어가서 당신인 척합니다!
    • 가족 중 누구도 차이점을 눈치 채지 못합니다. 아내는 "아, 그 새끼야, 집에 왔어"라고 말합니다.

    사기꾼이 당신의 돈을 모두 가져갔고 어쩌면 나가는 길에 Xbox 게임을 했을 수도 있습니다...

    요약

    CSRF는 기본적으로 다른 사람이 들어와서 당신인 척할 수 있도록 집 문을 열고 열어 두는 것에 의존합니다.

    이 문제를 해결하는 방법은 무엇입니까?

    처음으로 집 문을 열면 도어맨이 길고 임의의 숫자가 적힌 종이 한 장을 줄 것입니다.

    이제 집에 들어가려면 도어맨에게 그 종이를 보여줘야 들어갑니다.

    그래서이제사기꾼이 집에 들어오려고 하면 도어맨이 이렇게 묻습니다.

    "종이에 적힌 난수는 무엇인가요?"

    사기꾼의 번호가 정확하지 않으면 입장할 수 없습니다. 그는 난수를 정확하게 추측해야 합니다. 이는 매우 어려운 작업입니다. 설상가상으로, 난수는 20분 동안만 유효합니다(예를 들어). 따라서 가장하는 사람은 정확하게 추측해야 하며, 그뿐만 아니라 정답을 얻는 데 20분밖에 주어지지 않습니다. 너무 힘들어요! 그래서 그는 포기했습니다.

    물론 이 비유는 다소 무리가 있지만 도움이 되기를 바랍니다.

    **crud = (생성, 읽기, 업데이트 삭제)

    회신하다
    0
  • P粉121081658

    P粉1210816582023-10-24 00:28:04

    공격자는 토큰을 얻을 수 없습니다. 따라서 요청이 적용되지 않습니다.

    그누시티즌의 이 글을 추천합니다. CSRF에 대한 꽤 좋은 설명이 있습니다: http://www.gnucitizen.org/blog/csrf-revealed/

    회신하다
    0
  • 취소회신하다