[php] 로그인 양식에 CSRF 공격에 대한 토큰이 필요합니까?

지금까지 배운 내용에서 토큰의 목적은 공격자가 양식 제출을 위조하지 못하게하는 것입니다.

예를 들어, 웹 사이트에 입력 한 양식에 장바구니에 항목을 추가 한 경우 공격자가 원하지 않는 항목으로 장바구니를 스팸으로 만들 수 있습니다.

장바구니 양식에 유효한 여러 입력이있을 수 있으므로 공격자는 웹 사이트에서 판매하는 항목을 알고 있으면됩니다.

이 경우 토큰이 작동하는 방식을 이해하고 사용자가 카트에 추가 된 각 항목에 대해 양식의 “제출”버튼을 실제로 채워 넣었는지 확인하기 때문에 보안을 추가합니다.

그러나 토큰은 사용자 로그인 양식에 보안을 추가합니까? 사용자 이름과 비밀번호가 필요합니까?

사용자 이름과 암호는 매우 고유하기 때문에 공격자는 로그인 위조가 작동하기 위해 (토큰 설정이없는 경우에도) 침입자가 이미 웹 사이트에 로그인 할 수 있음을 알고 있어야합니다. 그 자신. 말할 것도없이, 사용자가 스스로 로그인하게하는 CSRF 공격은 실제적인 목적을 갖지 못할 것입니다.

CSRF 공격 및 토큰에 대한 이해가 정확합니까? 그리고 의심되는 사용자 로그인 양식에는 쓸모가 없습니까?



답변

예. 일반적으로 다른 CSRF 공격으로부터 로그인 양식을 보호해야합니다.

그렇지 않으면 사이트가 일종의 “신뢰할 수있는 도메인 피싱”공격에 취약합니다. 즉, CSRF 취약 로그인 페이지를 통해 공격자는 사용자 계정을 피해자와 공유 할 수 있습니다.

취약점은 다음과 같이 나타납니다.

  1. 공격자는 신뢰할 수있는 도메인에서 호스트 계정을 만듭니다.
  2. 공격자는이 호스트 계정의 자격 증명을 사용하여 피해자의 브라우저에서 로그인 요청을 위조합니다
  3. 공격자는 피해자가 신뢰할 수있는 사이트를 사용하도록 속이는 경우 호스트 계정을 통해 로그인 한 것을 알 수 없습니다
  4. 공격자는 브라우저가 호스트 계정으로 로그인되어있는 동안 (의도적으로 또는 의도하지 않게) 피해자가 “생성”한 모든 데이터 또는 메타 데이터에 액세스 할 수 있습니다.

적절한 예로, YouTube를 고려하십시오 . YouTube는 사용자가 “자신의”시청 기록을 볼 수 있도록 허용했으며, 로그인 양식은 CSRF에 취약했습니다! 그래서 결과적으로 공격자는 암호로 계정을 설정할 수 있습니다 그들은 , 알고 사용하여 YouTube에 피해자를 기록 하는 피해자가보고 무슨 비디오를 스토킹 – 계정.

이 주석 스레드 에는 이와 같은 개인 정보 침해에 “만”사용될 수 있음을 암시하는 내용이 있습니다. 아마도 Wikipedia의 CSRF 기사 에서 섹션을 인용 하십시오 .

로그인 CSRF는 다양한 새로운 공격을 가능하게합니다. 예를 들어 공격자는 나중에 자신의 합법적 인 자격 증명으로 사이트에 로그인하고 계정에 저장된 활동 기록과 같은 개인 정보를 볼 수 있습니다.

“신규 공격”에 중점을 둡니다. 피싱 공격이 사용자에게 미치는 영향을 상상 한 다음 사용자 자신의 신뢰할 수있는 책갈피를 통해 피싱 공격이 사이트에 작동한다고 상상해보십시오! 위에서 언급 한 주석 스레드에 링크 된 논문은 단순한 개인 정보 보호 공격을 넘어 몇 가지 예를 제공합니다.


답변

CSRF의 요점은 공격자가 미리 합법적으로 보이는 요청을 위조 할 수 있다는 것입니다. 그러나 공격자가 피해자의 사용자 이름과 비밀번호를 모르는 경우 로그인 양식으로이를 수행 할 수 없습니다.이 경우보다 효율적인 공격 방법이 있습니다 (자신의 로그인).

궁극적으로 공격자가 할 수있는 유일한 일은 보안 시스템이 일정 기간 동안 사용자를 잠글 수있는 경우 로그인에 실패한 스팸 메일로 사용자를 불편하게하는 것입니다.


답변

, 따라서 다른 웹 사이트는 귀하의 로그인 양식을 모방 할 수 없습니다! 저것과 같이 쉬운.

그들은 그렇게함으로써 무엇을 달성 할 수 있습니까?

  • 첫째, 당신은 그것을 허용하고 싶지 않습니다.
  • 둘째 : 매우 간단한 실패 사례조차도 :
    • 잘못된 비밀번호로 인해 사용자를 차단합니다 n. 때때로, 피할 수 있습니다.
    • 허위 해킹 경고를 방지 할 수 있습니다. 등

답변

CSRF 유효성 검사 사전 로그인은 IMHO에 그다지 의미가 없습니다.

덕분에 링크 @squiddle합니다 : seclab.stanford.edu/websec/csrf/csrf.pdf을 , 우리는 매우 첫 페이지에 읽을 수 있습니다 :

The most popular CSRF defense is to include a secret
token with each request and to validate that the received
token is correctly bound to the users session,
preventing CSRF by forcing the attacker to guess the
sessions token.

사전 로그인 CSRF 유효성 검사를 시도하면 잠재적 인 공격자에게 웹 사이트의 유효한 코드를 긁을 수있는 기회가 주어집니다! 그 / 그녀는 그 목적을 무너 뜨리는 토큰을 다시 게시 할 수있었습니다.

아마도 침입자는 사이트의 사용자 이름을 추측하려고 시도 할 수 있습니다. 내가 한 일은 IP 주소가 성공하지 않고 10 명의 사용자 이름을 추측하려고하면 단순히 블랙리스트에 올립니다.


답변