찾다
웹 프론트엔드HTML 튜토리얼CSRF란 무엇입니까? CSRF의 위험성과 이를 방어하는 방법

이 글의 내용은 CSRF란 무엇일까요? CSRF의 위험과 방어 방법은 특정 참고 가치가 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

CSRF란 무엇인가

CSRF를 이해하기 전에 두 가지 전제 조건을 대중화해야 합니다. 우선, 현재 대부분의 웹사이트에서 로그인 권한을 확인하는 방법에는 여러 가지가 있습니다. 세션 세션 작업 모드. 간단히 말하면, 세션 메커니즘은 서버가 키-값 쌍을 사용하여 로그인 정보를 기록하는 동시에 세션이 쿠키에 저장된다는 것입니다. ID(방금 언급한 키)는 쿠키에 저장됩니다. 또한 브라우저의 HTTP(s) 요청이 자동으로 쿠키를 변경한다는 것도 알고 있습니다. 서버에 전달되었습니다. 이러한 방식으로 각 요청 시 쿠키를 통해 세션 ID를 얻은 다음 이를 통해 서버에서 로그인 정보를 얻어 사용자 권한 확인을 완료합니다.

원래 이 기능도 좋은 기능이었습니다. 하지만 이로 인해 쿠키는 실제로 열려있습니다. 사용자가 웹사이트 A에 로그인하고, 웹사이트 B를 방문할 때 A 쿠키를 보내면, 웹사이트 요청, 이 요청은 실제로 웹사이트 A에 대한 사용자의 로그인 정보를 전달합니다. 만약 A가 이때 B역에 있다면 웹사이트 요청이 사용자에게 알려지지 않은 경우 이는 매우 심각한 피해입니다. 위의 과정은 Cross-Site Request Forgery, 즉 Cross-Site Request Forgery 공격이다. CSRF.

CSRF의 위험

CSRF 취약점에 대한 간단한 요약은 웹사이트 권한 확인의 취약점을 사용하여 사용자가 알지 못하는 사이에 요청을 보내는 것입니다. 사용자를 "위장"하려는 목적을 달성합니다. 공격자가 CSRF를 사용하여 수행하는 주요 공격 유형은 다음과 같습니다.

공격자는 피해자 사용자를 속여 계정 세부 정보 업데이트, 쇼핑 완료, 피해자가 허용한 모든 상태 변경 작업을 완료하도록 할 수 있습니다. 로그아웃 또는 로그인 및 기타 작업

사용자의 개인 데이터 가져오기

다른 취약점 공격에 협조

CSRF 웜# 🎜🎜##🎜 🎜#그중에 CSRF 웜은 이름에서 알 수 있듯이 웜 효과를 생성하며 공격은 하나에서 열로, 열에서 백으로 퍼집니다. 예를 들어, 커뮤니티에서 친구에게 비공개로 메시지를 보내기 위한 인터페이스와 친구 목록을 얻기 위한 인터페이스에는 모두 CSRF 취약점이 있습니다. 공격자는 이를 CSRF 웜으로 결합할 수 있습니다. 사용자가 악성 페이지를 방문하면 다음을 통해 친구 목록 정보를 얻을 수 있습니다. 그런 다음 CSRF를 사용합니다. 개인 메시징 친구의 CSRF 취약점은 누군가가 이 메시지의 링크를 보는 한 각 친구에게 악성 페이지를 가리키는 메시지를 보냅니다. CSRF 웜은 계속해서 확산되며 이로 인해 피해와 영향이 발생할 수 있습니다. 원인은 엄청납니다!

방어 방법

위의 설명을 통해 CSRF에는 쿠키의 자동 전달 기능과 크로스 사이트 공격이라는 두 가지 특성이 있음을 알 수 있습니다. 그러면 이 두 가지 기능에 대해 다음 솔루션을 사용할 수 있습니다.

Referer 필드 확인

HTTP 헤더에 요청이 들어오는 주소를 나타내는 데 사용되는 Referer 필드가 있다는 것은 누구나 알고 있습니다. 웹사이트에서 요청의 이 필드를 확인함으로써 해당 요청이 이 사이트에서 발행되었는지 여부를 알 수 있습니다. 우리는 이 사이트에서 발행되지 않은 모든 요청을 거부할 수 있으므로 CSRF의 크로스 사이트 특성을 피할 수 있습니다.

const { parse } = require('url');module.exports = class extends think.Logic {
  indexAction() {
    const referrer = this.ctx.referrer();
    const {host: referrerHost} = parse(referrer);
    if(referrerHost !== 'xxx') {
        return this.fail('REFERRER_ERROR');
    }
  }}

ThinkJS를 예로 들어 간단하게 로직으로 판단해보세요. 이 방법은 클라이언트가 리퍼러를 구성할 수 없다는 점을 이용합니다. 간단하지만 웹 사이트에 여러 도메인 이름이 있거나 도메인 이름이 자주 변경되는 경우 매우 번거롭고 특정 제한 사항이 있습니다.

토큰 확인

CSRF는 브라우저의 쿠키 자동 전달 기능을 활용하므로 또 다른 방어 아이디어는 쿠키를 통해 확인 정보를 전달하지 않고 다른 매개변수에 임의성을 추가하는 것입니다. 암호화된 문자열이 확인됩니다. 여기에는 두 가지 방법이 더 있습니다.

Random 문자열: 각 제출에 임의의 문자열 매개변수를 추가합니다. 매개변수는 요청될 때마다 서버에서 페이지를 통해 전송됩니다. . 서비스 측에서는 매개변수가 일치하는지 확인하여 사용자 요청인지 여부를 판단합니다. CSRF 공격에서는 공격자가 임의의 문자열 값을 미리 알 수 없기 때문에 서버는 값을 확인하여 요청을 거부할 수 있습니다.

JWT: 사실 빼고는 세션 로그인 외에도 JWT 토큰 로그인 확인이 점점 더 대중화되고 있습니다. 이 방법은 프런트 엔드에 로그인 토큰을 기록하고 요청이 이루어질 때마다 헤더에 전달하는 것입니다. 로그인 확인 프로세스는 인증 헤더를 추가하여 구현됩니다. CSRF 공격에서는 공격자가 토큰 값을 알 수 없기 때문에 이 방법으로도 CSRF 공격을 방지할 수 있습니다. 틀림없이 JWT 외에도 토큰 로그인 방법에는 OAuth 및 기타 여러 방법이 포함됩니다.

위 내용은 CSRF란 무엇입니까? CSRF의 위험성과 이를 방어하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
HTML, CSS 및 JavaScript의 미래 : 웹 개발 동향HTML, CSS 및 JavaScript의 미래 : 웹 개발 동향Apr 19, 2025 am 12:02 AM

HTML의 미래 트렌드는 의미론 및 웹 구성 요소이며 CSS의 미래 트렌드는 CSS-In-JS 및 CSShoudini이며, JavaScript의 미래 트렌드는 WebAssembly 및 서버리스입니다. 1. HTML 시맨틱은 접근성과 SEO 효과를 향상시키고 웹 구성 요소는 개발 효율성을 향상 시키지만 브라우저 호환성에주의를 기울여야합니다. 2. CSS-in-JS는 스타일 관리 유연성을 향상 시키지만 파일 크기를 증가시킬 수 있습니다. CSShoudini는 CSS 렌더링의 직접 작동을 허용합니다. 3. Webosembly는 브라우저 애플리케이션 성능을 최적화하지만 가파른 학습 곡선을 가지고 있으며 서버리스는 개발을 단순화하지만 콜드 스타트 ​​문제의 최적화가 필요합니다.

HTML : 구조, CSS : 스타일, 자바 스크립트 : 동작HTML : 구조, CSS : 스타일, 자바 스크립트 : 동작Apr 18, 2025 am 12:09 AM

웹 개발에서 HTML, CSS 및 JavaScript의 역할은 다음과 같습니다. 1. HTML은 웹 페이지 구조를 정의하고, 2. CSS는 웹 페이지 스타일을 제어하고 3. JavaScript는 동적 동작을 추가합니다. 그들은 함께 현대 웹 사이트의 프레임 워크, 미학 및 상호 작용을 구축합니다.

HTML의 미래 : 웹 디자인의 진화 및 트렌드HTML의 미래 : 웹 디자인의 진화 및 트렌드Apr 17, 2025 am 12:12 AM

HTML의 미래는 무한한 가능성으로 가득합니다. 1) 새로운 기능과 표준에는 더 많은 의미 론적 태그와 WebComponents의 인기가 포함됩니다. 2) 웹 디자인 트렌드는 반응적이고 접근 가능한 디자인을 향해 계속 발전 할 것입니다. 3) 성능 최적화는 반응 형 이미지 로딩 및 게으른로드 기술을 통해 사용자 경험을 향상시킬 것입니다.

HTML vs. CSS vs. JavaScript : 비교 개요HTML vs. CSS vs. JavaScript : 비교 개요Apr 16, 2025 am 12:04 AM

웹 개발에서 HTML, CSS 및 JavaScript의 역할은 다음과 같습니다. HTML은 컨텐츠 구조를 담당하고 CSS는 스타일을 담당하며 JavaScript는 동적 동작을 담당합니다. 1. HTML은 태그를 통해 웹 페이지 구조와 컨텐츠를 정의하여 의미를 보장합니다. 2. CSS는 선택기와 속성을 통해 웹 페이지 스타일을 제어하여 아름답고 읽기 쉽게 만듭니다. 3. JavaScript는 스크립트를 통해 웹 페이지 동작을 제어하여 동적 및 대화식 기능을 달성합니다.

HTML : 프로그래밍 언어입니까 아니면 다른 것입니까?HTML : 프로그래밍 언어입니까 아니면 다른 것입니까?Apr 15, 2025 am 12:13 AM

Htmlisnotaprogramminglanguage; itisamarkuplanguage.1) htmlstructuresandformatswebcontentusingtags.2) itworksporstylingandjavaScriptOfforIncincivity, WebDevelopment 향상.

HTML : 웹 페이지 구조 구축HTML : 웹 페이지 구조 구축Apr 14, 2025 am 12:14 AM

HTML은 웹 페이지 구조를 구축하는 초석입니다. 1. HTML은 컨텐츠 구조와 의미론 및 사용 등을 정의합니다. 태그. 2. SEO 효과를 향상시키기 위해 시맨틱 마커 등을 제공합니다. 3. 태그를 통한 사용자 상호 작용을 실현하려면 형식 검증에주의를 기울이십시오. 4. 자바 스크립트와 결합하여 동적 효과를 달성하기 위해 고급 요소를 사용하십시오. 5. 일반적인 오류에는 탈수 된 레이블과 인용되지 않은 속성 값이 포함되며 검증 도구가 필요합니다. 6. 최적화 전략에는 HTTP 요청 감소, HTML 압축, 시맨틱 태그 사용 등이 포함됩니다.

텍스트에서 웹 사이트로 : HTML의 힘텍스트에서 웹 사이트로 : HTML의 힘Apr 13, 2025 am 12:07 AM

HTML은 웹 페이지를 작성하는 데 사용되는 언어로, 태그 및 속성을 통해 웹 페이지 구조 및 컨텐츠를 정의합니다. 1) HTML과 같은 태그를 통해 문서 구조를 구성합니다. 2) 브라우저는 HTML을 구문 분석하여 DOM을 빌드하고 웹 페이지를 렌더링합니다. 3) 멀티미디어 기능을 향상시키는 HTML5의 새로운 기능. 4) 일반적인 오류에는 탈수 된 레이블과 인용되지 않은 속성 값이 포함됩니다. 5) 최적화 제안에는 시맨틱 태그 사용 및 파일 크기 감소가 포함됩니다.

HTML, CSS 및 JavaScript 이해 : 초보자 안내서HTML, CSS 및 JavaScript 이해 : 초보자 안내서Apr 12, 2025 am 12:02 AM

WebDevelopmentReliesonHtml, CSS 및 JavaScript : 1) HtmlStructuresContent, 2) CSSSTYLESIT, 및 3) JAVASCRIPTADDSINGINTERACTIVITY, BASISOFMODERNWEBEXPERIENCES를 형성합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구