로그인 폼에 CSRF 공격에 대한 토큰이 필요합니까?
지금까지 배운 바로는, 토큰의 목적은 공격자가 폼의 제출을 조작하는 것을 막는 것입니다.
예를 들어 웹 사이트에 장바구니에 추가된 항목을 입력하는 양식이 있고 공격자가 원하지 않는 항목으로 장바구니에 스팸 메시지를 보낼 수 있는 경우입니다.
장바구니 폼에 유효한 입력이 여러 개 있을 수 있기 때문에 공격자는 웹사이트에서 판매하는 아이템을 알면 됩니다.
사용자가 카트에 추가된 각 항목에 대해 폼의 "Submit(전송)" 버튼을 실제로 입력하고 눌렀기 때문에 토큰이 어떻게 작동하고 보안이 추가되는지 이해합니다.
단, 토큰은 사용자 이름과 비밀번호를 필요로 하는 사용자 로그인 양식에 보안을 추가합니까?
사용자 이름과 비밀번호는 매우 고유하기 때문에 공격자가 로그인 위조가 작동하려면 둘 다 알아야 합니다(토큰이 설정되어 있지 않은 경우에도). 공격자가 이미 알고 있으면 웹 사이트에 직접 서명할 수 있습니다.말할 것도 없이 사용자가 직접 로그인하도록 하는 CSRF 공격은 실제적인 목적이 없습니다.
CSRF 공격과 토큰에 대한 이해가 올바릅니까?그리고 사용자 로그인 양식에는 쓸모가 없는 것일까요?
네. 일반적으로 CSRF 공격으로부터 로그인 폼을 보호해야 합니다.
그렇지 않으면 사이트가 일종의 "신뢰할 수 있는 도메인 피싱" 공격에 취약해집니다.즉, CSRF 취약 로그인 페이지를 사용하면 공격자가 공격 대상자와 사용자 계정을 공유할 수 있습니다.
취약성은 다음과 같이 발생합니다.
- 공격자는 신뢰할 수 있는 도메인에 호스트 계정을 만듭니다.
- 공격자는 공격 대상자의 브라우저에서 이 호스트 계정의 자격 증명을 사용하여 로그인 요청을 위조합니다.
- 공격자는 공격 대상자가 호스트 계정을 통해 로그인한 것을 알아차리지 못하는 신뢰할 수 있는 사이트를 사용하도록 속입니다.
- 공격자는 이제 브라우저가 호스트 계정으로 로그인한 동안 공격 대상자가 "작성"한 데이터 또는 메타데이터에 액세스할 수 있습니다(의도 또는 의도하지 않음).
적절한 예로 유튜브를 들 수 있다.YouTube는 사용자가 "자신들만의" 보기 기록을 볼 수 있도록 했고, 그들의 로그인 폼은 CSRF에 취약했습니다!그 결과 공격자는 자신이 알고 있는 패스워드로 계정을 설정하고 해당 계정을 사용하여 피해자를 유튜브에 로그인시켜 피해자가 보고 있는 비디오를 스토킹할 수 있었습니다.
이 코멘트 스레드에는 이러한 프라이버시 위반에 "만" 사용될 수 있다는 몇 가지 설명이 있습니다.그럴지도 모르지만 Wikipedia CSRF 기사의 섹션을 인용하면 다음과 같습니다.
CSRF에 로그인하면 다양한 신규 공격이 가능합니다.예를 들어 공격자는 나중에 정당한 자격 증명으로 사이트에 로그인하여 계정에 저장된 액티비티 이력 등의 개인 정보를 표시할 수 있습니다.
"신상 공격"을 강조합니다.피싱 공격이 사용자에게 미치는 영향을 상상한 다음 해당 피싱 공격이 사용자가 사이트에 대해 신뢰할 수 있는 북마크를 통해 작동한다고 상상해 보십시오.상기 코멘트 스레드에 링크된 백서는 단순한 프라이버시 공격을 넘어서는 몇 가지 예를 제시합니다.
CSRF의 요점은 공격자가 사전에 정당한 것처럼 보이는 요구를 위조할 수 있다는 것입니다.그러나 공격자가 공격 대상자의 사용자 이름과 암호를 알지 못하면 로그인 양식으로는 이 작업을 수행할 수 없습니다. 이 경우 보다 효율적인 공격 방법이 있습니다(자체 로그인).
최종적으로 공격자가 할 수 있는 유일한 방법은 실패한 로그인을 스팸 발송함으로써 사용자에게 불편을 주는 것입니다.이 때 보안 시스템은 일정 기간 동안 사용자를 잠글 수 있습니다.
OWASP의 CSRF 문서에는 로그인 CSRF에 관한 전용 섹션과 그 이유 및 방지 방법이 기재되어 있습니다.
기본적으로 login-CSRF에서는 사용자가 자신의 웹 사이트로 로그인하려고 하지만 실제로는 공격자로 로그인하게 됩니다.그러면 공격자는 사용자가 계정에서 개인적으로 입력/변경하고 있다고 생각하는 모든 데이터에 액세스할 수 있습니다.
기사의 요점:
로그인 CSRF의 위험성:
공격자가 CSRF를 사용하여 공격자의 계정을 사용하여 쇼핑 웹사이트에서 피해자를 인증한 후 피해자가 신용카드 정보를 입력하면 공격자는 피해자의 저장된 카드 세부 정보를 사용하여 항목을 구입할 수 있습니다.
대처 방법:
로그인 CSRF는 사전 세션(사용자 인증 전 세션)을 생성하여 로그인 형식으로 토큰을 포함함으로써 경감할 수 있습니다.
그리고 마지막으로:
사전 세션은 사용자가 인증되면 실제 세션으로 이행할 수 없습니다.세션을 파기하고 새 세션을 작성해야 합니다.
이 경감 접근방식은 로그인 후 세션을 재생성하는 것도 이 접근방식의 일부이기 때문에 세션 고정의 취약성도 방지합니다.
언급URL : https://stackoverflow.com/questions/6412813/do-login-forms-need-tokens-against-csrf-attacks
'programing' 카테고리의 다른 글
두 개체를 자세히 비교할 수 있는 Java 유틸리티가 있습니까? (0) | 2023.01.15 |
---|---|
변수 이름을 문자열로 가져오기 (0) | 2023.01.15 |
스크립트 로드 및 실행 순서 (0) | 2023.01.15 |
열 수가 행 1의 값 수와 일치하지 않습니다. (0) | 2023.01.15 |
PHP를 사용한 가장 간단한 양방향 암호화 (0) | 2023.01.15 |